cppsocket
v0.0.8
這是具有或不帶有 SSL/TLS/DTLS 的 C++ 用戶端/伺服器的僅頭檔實作。此實作使用 OpenSSL 和 BSD API 來實作底層套接字介面。
編譯已經過測試:
BSD API 類別方法的基礎套接字類別。
// default constructor - no socket created because type is unknown
Socket ();
Socket::initSocket (domain, type, protocol); // creates socket
// create socket from previously created file descriptor
Socket ( int );
// create socket of the given type - NOTE: This returns a Socket class type that is not a Tcp or Udp socket class
Socket (domain, type, protocol);
建立一個 TCP 伺服器物件以接受 TCP 連線。
// default no IP/port bound but TCP socket created
TcpServer ();
// TCP socket created, IP/port bound, but not listening
TcpServer ( const uint16_t port, const std::string& ipAddr = " 0.0.0.0 " );
// TCP socket created, IP/port bound, and listening for clients
TcpServer ( const std::string& ipAddr, const uint16_t port, const int backlog);
建立 TCP 用戶端物件以連接到已知的 TCP 伺服器。
// default TCP socket created but no server connection
TcpClient ();
// create TcpClient with given TCP socket file descriptor
TcpClient ( const int filedescriptor);
// TcpClient connected to a TcpServer IP/port
TcpClient ( const std::string& ipAddr, const uint16_t port);
建立 SSL TCP 伺服器以接受 SSL TCP 用戶端。
// Create a SSL TCP Server not bound to IP/port
SecureTcpServer ( const std::string& keyFile, const std::string& certFile);
// Create a SSL TCP Server bound to a given port and IP or default IP
SecureTcpServer ( const std::string& keyFile, const std::string& certFile, const uint16_t port, const std::string& ipAddr = " 0.0.0.0 " );
建立 SSL TCP 用戶端以連接到 SSL TCP 伺服器。
// create a SSL TCP client with a given SSL context - used with SecureTcpServer::accept return
SecureTcpClient ( const int filedescriptor, SSL_CTX *sslctx);
// create a SSL TCP client connected to a SSL TCP server
SecureTcpClient ( const std::string& ipAddr, const uint16_t port);
// Client
// Connect to TCP server on IP 127.0.0.1 and port 54321
TcpClient client ( " 127.0.0.1 " , 54321 );
建立一個 UDP 伺服器物件以接受 UDP 連線。
// default no IP/port bound but UDP socket created
UdpServer ();
// UDP server socket created, IP/port bound
UdpServer ( const uint16_t port, const std::string &ipAddr = " 0.0.0.0 " );
建立 UDP 用戶端物件以連接到已知的 UDP 伺服器。
// default UDP socket created but no server connection
UdpClient ();
// UdpClient connected to a UdpServer IP/port
UdpClient ( const std::string& ipAddr, const uint16_t port) noexcept ( false )
建立 SSL UDP 伺服器以接受 SSL UDP 用戶端。
// Create a SSL UDP Server not bound to IP/port
SecureUdpServer ( const std::string& keyFile, const std::string& certFile);
// Create a SSL UDP Server bound to a given port and IP or default IP
SecureUdpServer ( const std::string& keyFile, const std::string& certFile, const uint16_t port, const std::string& ipAddr = " 0.0.0.0 " );
建立 SSL UDP 用戶端以連接到 SSL UDP 伺服器。
// Create a SSL UDP Client not attempting to connect to a SSL UDP Server (need to call SecureUdpClient::connect(IP, port) to connect)
SecureUdpClient ( const std::string& keyFile, const std::string& certFile);
// create a SSL UDP client connected to a given SSL UDP server waiting in a SecureUdpServer::accept call on the given IP and port
SecureUdpClient ( const std::string& ipAddr, const uint16_t port, const std::string& keyFile, const std::string& certFile);
不要跨線程共享任何套接字對象,除非您在發送/讀取和接受呼叫上提供自己的線程安全性。
使用原始程式碼樹中的cppsocket.hpp
檔案並將其包含在需要使用它的檔案中。
使用 ctest 運行單元測試:
ctest -C debug
所有貢獻均受到高度讚賞。