首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

【请问】Linux上用select()监测socket,是不是通常不去监测可写状态的

2012-12-30 
【请教】Linux下用select()监测socket,是不是通常不去监测可写状态的?一个简单的client-server程序。我在serv

【请教】Linux下用select()监测socket,是不是通常不去监测可写状态的?
一个简单的client-server程序。
我在server端,用select()函数监测accept()到的client的socket。
这个时候,如果监测该socket的可写状态,发现select()就不阻塞了,因为通常情况下,总是可写的,这就导致select所在的循环几乎处于不断的轮询状态了。

因此,我想请教大家,是不是,这种情况下,通常只监测可读,不监测可写呢?
[解决办法]
是的,只监测可读, 因为服务器端总是接收到客户端的连接请求才会做出想应的处理
[解决办法]
写对于一个异步的服务端架构是非常重要的.

知道写什么时候触发是最重要的, 即网卡只要不满就会触发.

还有一点, 你要知道write写10字节, 但返回值可能!=10,还有可能发生EAGAIN错误(fd非阻塞),这都是因为网卡满了,此时你要把未写出的内容缓存起来,注册写事件, 等写事件触发时把剩余的数据写出去.

热点排行