Windows Sockets2 详解3——堵塞模式

我想真正理解windows sockets2的最好方法就是通过编程实践,只有实际去做了,才能获得形象的记忆和深刻的理解。下面我们通过代码看一下堵塞模式下是如何编程的,以一个简单的聊天室程序为例。

先分析一下:在(2)中我们已经了解了堵塞模式的特点,堵塞模式下对socket对象的任何操作都会被挂起,直到操作结束,线程才被唤醒。 因此我们需要一个单独的线程来执行Accept操作,等待客户端连接的到来;对每一个接收的socket对象,都需要一个单独的线程执行recv操作,不断接收客户端发送来的数据;最后我们需要一个线程来将从客户端接收来的消息广播给所有客户。显而易见,服务器端线程的数量会随着连接数量的增加而不断增加,随着线程数量的增加,cpu进行线程切换的时间增加,真正处理请求的时间减少了,造成服务器的响应速度越来越慢。

我们主要来看一下服务器端:

代码下载

客户端可以用telnet 127.0.0.1 5555

原文地址:https://www.cnblogs.com/hjblog/p/1878182.html