之前用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
关注
打赏
