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
모든 기여에 감사드립니다.