#ifndef SOCKETIO_HPP #define SOCKETIO_HPP #include #include #include #include #include #include #include #ifndef _WIN32 #include #include #else #define _WINSOCK_DEPRECATED_NO_WARNINGS #include #include #pragma comment(lib, "ws2_32.lib") #endif class cppsocket { private: #ifdef _WIN32 WSADATA wsa; SOCKET s; #else struct sockaddr_in serv_addr; int sock; #endif std::vector buffer; public: const static std::size_t buffersize = 256; #ifdef _WIN32 cppsocket(WSADATA d, SOCKET _s); #else cppsocket(sockaddr_in _serv_addr, int _sock); #endif cppsocket(); cppsocket(const cppsocket& o) = delete; cppsocket(cppsocket&& o); cppsocket(const std::string& addr, unsigned int PORT); void close(); int socket_id(); void write(const std::string& message); void write(const std::vector& message); std::vector receive(); cppsocket& operator=(cppsocket&& o); }; class server_socket { private: #ifdef _WIN32 WSADATA wsaData; int iResult; SOCKET ListenSocket = INVALID_SOCKET; #else int port_; int server_fd; struct sockaddr_in address; socklen_t addrlen; #endif public: int port(); server_socket(int _port); cppsocket accept_connection(); void close(); }; #endif