之前用c++实现过基于windows socket的单线程TCP服务器(http://www.cnblogs.com/jzincnblogs/p/5170230.html),今天实现了一个多线程的版本,可以接受多个客户端的请求,原理与之前的单线程版本相似,只是在多线程版本中主线程用于监测客户端请求,每当有新客户端请求连接,主线程便新开一个线程用户处理客户端的请求。代码如下:
头文件:
1 #ifndef SERVER_H 2 #define SERVER_H 3 4 #include 5 #include 6 7 #pragma comment (lib, "ws2_32.lib") 8 9 #define IP_BUF_SIZE 129 10 11 class Server 12 { 13 public: 14 Server(); 15 ~Server(); 16 Server(const Server &) = delete; 17 Server & operator=(const Server &) = delete; 18 void WaitForClient(); 19 private: 20 WORD winsock_ver; 21 WSADATA wsa_data; 22 SOCKET sock_svr; 23 SOCKET sock_clt; 24 HANDLE h_thread; 25 SOCKADDR_IN addr_svr; 26 SOCKADDR_IN addr_clt; 27 int ret_val; 28 int addr_len; 29 char buf_ip[IP_BUF_SIZE]; 30 }; 31 32 #endif
函数定义:
1 #include "server.h" 2 #include 3 #include 4 5 using std::cerr; 6 using std::cout; 7 using std::endl; 8 9 #define SERVER_PORT 5000 10 #define MSG_BUF_SIZE 1024 11 12 Server::Server() 13 { 14 cout关注打赏