📄 server.hpp
字号:
#ifndef _SERVER_HPP_#define _SERVER_HPP_#include <set>#include <sys/socket.h>#include <netinet/in.h>#include <pthread.h>using std::set;class TcpServer {public: enum ErrorCode { ERROR_CREATING_SOCKET, ERROR_BINDING_ADDRESS, ERROR_LISTENING }; struct ThreadData { pthread_t thread; sockaddr_in client; }; TcpServer(const unsigned short port, const unsigned int thread_count) throw (ErrorCode); virtual ~TcpServer(); void start() throw (ErrorCode); void stop(); //void set_thread_count(const unsigned int thread_count) throw (ErrorCode); //unsigned int thread_count();protected: virtual void serve(const int socket, const sockaddr_in &client) = 0;private: TcpServer(TcpServer &) {} TcpServer &operator =(TcpServer &) {} unsigned int m_thread_count; bool m_stop; int m_listen_socket; sockaddr_in m_listen_addr; typedef set<pthread_t> ThreadSet; ThreadSet m_threads; void worker_entry(); static void *worker_wrapper(void *param); pthread_mutex_t m_accept_lock;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -