c++ socket 客户端库 socks5 客户端 RudeSocket™ Open Source C++ Socket Library

简介:

介绍

一个c++ socket 客户端库

http://www.rudeserver.com/socket/index.html

The RudeSocket™ Open Source C++ Socket Library provides a simple to use interface for creating and using client sockets. You can connect to the destination server through an unlimited number of chainable proxies, SOCKS4 and SOCKS5 servers if anonymity or security is a priority. Supports SSL [1] as well as normal connections. Supports timeouts. Full version requires that openSSL libraries are installed. However, a lite version is available if SSL is not required or available.

The library is currently available for linux development environments.

Features:

  • SSL Support (Linux and Windows) [1]
  • Supports Sockes 4, Socks 5, HTTP Proxy
  • Like all RudeServer Libraries: Simple and Easy to use.
  • Open Source and Free
  • Platform Independent Interface

[1] - This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)

 

用法

General Usage

Socket *socket = new Socket();
socket->connect("google.com", 80);
socket->sends("GET / HTTP/1.0\n\n");
const char *response = socket->reads();
cout << response;
socket->close();

SSL Usage

Socket *socket = new Socket();
socket->connectSSL("google.com", 443);
socket->sends("GET / HTTP/1.0\n\n");
const char *response = socket->reads();
cout << response;
socket->close();

Chaining Connections

Socket *socket = new Socket();
socket->insertSocks4("12.34.56.78", 8000, "username");
socket->insertSocks5("12.34.56.78", 8000, "username", "password");
socket->insertProxy("12.34.56.78", 8080);
socket->connectSSL("google.com", 443);
socket->sends("GET / HTTP/1.0\n\n");
const char *response = socket->reads();
cout << response;
socket->close();

Adding Error checking

Socket *socket = new Socket();
if(socket->connectSSL("google.com", 443))
{
  if(socket->sends("GET / HTTP/1.0\n\n"))
  {
    const char *response = socket->reads();
    if(response)
    {
      cout << response;
    }
    else
    {
      cout << socket->getError() << "\n";
    }
  }
  else
  {
    cout << socket->getError() << "\n";
  }
  socket->close();
}
else
{
  cout << socket->getError() << "\n";
}

 

Constructor Summary
Socket() 
          Constructor
~Socket() 
          Destructor

 

Method Summary
 bool close() 
          Closes the connection
 bool connect( const char* server, int port ) 
          Connects to the specified server and port
 bool connectSSL( const char* server, int port ) 
          Connects to the specified server and port over a secure connection
 const char* getError() 
          Returns a description of the last known error
 bool insertProxy( const char* server, int port ) 
          Inserts a CONNECT-Enabled HTTP proxy into the connect chain
 bool insertSocks4( const char* server, int port, const char* username ) 
          Inserts a Socks4 server into the connect chain
 bool insertSocks5( const char* server, int port, const char* username, const char* password ) 
          Inserts a Socks5 server into the connect chain
 bool insertTunnel( const char* server, int port ) 
          Inserts a transparent tunnel into the connect chain
 int read( char* buffer, int length ) 
          Reads a buffer of data from the connection
 const char* readline() 
          Reads a line from the connection
 const char* reads() 
          Reads everything available from the connection
 int send( const char* data, int length ) 
          Sends a buffer of data over the connection
 bool sends( const char* buffer ) 
          Sends a null terminated string over the connection
 void setMessageStream( std::ostream& o ) 
          Sets an output stream to receive realtime messages about the socket
 void setTimeout( int seconds, int microseconds ) 
          Sets the timeout value for Connect, Read and Send operations.

  

Constructor Detail

Socket

public Socket();
Constructor

~Socket

public ~Socket();
Destructor


Method Detail

close

public bool close();
Closes the connection
A connection must established before this method can be called

connect

public bool connect( const char* server, int port );
Connects to the specified server and port
If proxies have been specified, the connection passes through tem first.

connectSSL

public bool connectSSL( const char* server, int port );
Connects to the specified server and port over a secure connection
If proxies have been specified, the connection passes through them first.

getError

public const char* getError();
Returns a description of the last known error

insertProxy

public bool insertProxy( const char* server, int port );
Inserts a CONNECT-Enabled HTTP proxy into the connect chain
Becomes the last server connected to in the chain before connecting to the destination server

insertSocks4

public bool insertSocks4( const char* server, int port, const char* username );
Inserts a Socks4 server into the connect chain
Becomes the last server connected to in the chain before connecting to the destination server

insertSocks5

public bool insertSocks5( const char* server, int port, const char* username, const char* password );
Inserts a Socks5 server into the connect chain
Becomes the last server connected to in the chain before connecting to the destination server


insertTunnel

public bool insertTunnel( const char* server, int port );
Inserts a transparent tunnel into the connect chain
A transparent Tunnel is a server that accepts a connection on a certain port,
and always connects to a particular server:port address on the other side.
Becomes the last server connected to in the chain before connecting to the destination server

read

public int read( char* buffer, int length );
Reads a buffer of data from the connection
A connection must established before this method can be called

readline

public const char* readline();
Reads a line from the connection
A connection must established before this method can be called

reads

public const char* reads();
Reads everything available from the connection
A connection must established before this method can be called

send

public int send( const char* data, int length );
Sends a buffer of data over the connection
A connection must established before this method can be called

sends

public bool sends( const char* buffer );
Sends a null terminated string over the connection
The string can contain its own newline characters.
Returns false and sets the error message if it fails to send the line.
A connection must established before this method can be called


setMessageStream

public void setMessageStream( std::ostream& o );
Sets an output stream to receive realtime messages about the socket

setTimeout

public void setTimeout( int seconds, int microseconds );
Sets the timeout value for Connect, Read and Send operations.
Setting the timeout to 0 removes the timeout - making the Socket blocking.

编译:

官方原版源码下载:点击下载

删除socket_platform.h文件包含 #include <winsock2.h> 的代码,以防止重写义的问题

相关文章
|
1月前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
67 6
|
1月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
101 10
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
140 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
154 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
71 5
|
1月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
58 1
|
2月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
40 6
|
2月前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
34 1
|
2天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
15 2
|
8天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
34 5