首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问关于socket中select的使用

2012-02-29 
请教关于socket中select的使用我有一个sever端,1500个客户端,当客户端连接服务器端的时候,服务器端接受连

请教关于socket中select的使用
我有一个sever端,1500个客户端,当客户端连接服务器端的时候,服务器端接受连接,并且sever端创建一个新线程,将连接的file   descriptors当作参数传入线程,线程内部与客户端进行数据收发。
我希望在每个线程里接受数据的时候设置time   out值,当调用read的时候超过time   out时间就放弃这次read。
如果使用select的话,这个函数能只监听每个线程内部他自己的那个file   descriptors么?
高手们请指教,谢谢:)

[解决办法]
Select 是一种静态方法,它可确定一个或多个 Socket 实例的状态。必须先将一个或多个套接字放入 IList 中,然后才能使用 Select 方法。通过调用 Select(将 IList 作为 checkread 参数),可检查是否具有可读性。若要检查套接字是否具有可写性,请使用 checkwrite 参数。若要检测错误条件,请使用 Checkerror。在调用 Select 之后,IList 中将仅填充那些满足条件的套接字。

如果当前处于侦听状态,则可读意味着可成功地对 Accept 进行调用而没有阻塞。如果当前已接受连接,则可读意味着有可读取的数据。这些情况下,所有的接收操作均可成功进行而没有阻塞。可读性也可指示远程 Socket 是否已经关闭连接;如果连接已关闭,则对 Receive 的调用将立即返回,并返回零字节。

如果对 Connect 进行非阻塞调用,则可写意味着已经成功连接。如果已经建立连接,则可写意味着所有的发送操作均会成功完成而没有阻塞。

[解决办法]
http://blog.sina.com.cn/u/4b383bff010006xg

热点排行