#ifndef TCP_SERVER_H #define TCP_SERVER_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAXPACKETSIZE 40960 #define MAX_CLIENT 1000 //#define CODA_MSG 4 struct descript_socket{ int socket = -1; string ip = ""; int id = -1; std::string message; bool enable_message_runtime = false; }; class TCPServer { public: int setup(int port, vector opts = vector()); vector getMessage(); void accepted(); void Send(string msg, int id); void detach(int id); void clean(int id); bool is_online(); string get_ip_addr(int id); int get_last_closed_sockets(); void closed(); protected: int sockfd, n, pid; struct sockaddr_in serverAddress; struct sockaddr_in clientAddress; pthread_t serverThread[ MAX_CLIENT ]; static vector newsockfd; static char msg[ MAXPACKETSIZE ]; static vector Message;//[CODA_MSG]; static bool isonline; static int last_closed; static int num_client; static std::mutex mt; static std::mutex mt_sock_; static void * Task(void * argv); }; #endif