zoukankan      html  css  js  c++  java
  • 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 ");
    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 ");
    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 ");
    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 "))
      {
        const char *response = socket->reads();
        if(response)
        {
          cout << response;
        }
        else
        {
          cout << socket->getError() << " ";
        }
      }
      else
      {
        cout << socket->getError() << " ";
      }
      socket->close();
    }
    else
    {
      cout << socket->getError() << " ";
    }

     

    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> 的代码,以防止重写义的问题

  • 相关阅读:
    centos7 查看启动ntp服务命令
    集群重启某一主机下所有osd down解决办法
    不卸载ceph重新获取一个干净的集群环境
    centos7 中文乱码解决方法
    ceph-deploy mon add 失败
    批量删除osd的shell脚本
    搭建自己的框架WedeNet(二)
    搭建自己的框架WedeNet(一)
    多线程总结
    C#中操作单个cookie和cookie字典
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/5240755.html
Copyright © 2011-2022 走看看