之前用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关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?