0

我有以下问题:我正在等待选择套接字。

ArrayList a = new ArrayList();    
a.Add(Socket1);   
print_time_before  
Select(a, null, null, 8000000);  
print_time_after  
  1. 我可以看到打印之间的时间不是 8 秒,尽管没有其他应用程序写入该套接字。怎么了 ?

  2. ia a 包含套接字,这意味着没有可读取的内容或存在?

4

1 回答 1

0

它在手册中:

如果您处于侦听状态,可读性意味着对 Accept 的调用将成功而不会阻塞。如果您已经接受了连接,则可读性意味着数据可供读取。在这些情况下,所有接收操作都会成功而不会阻塞。可读性还可以指示远程 Socket 是否已关闭连接;在这种情况下,对 Receive 的调用将立即返回,返回零字节。

当至少一个感兴趣的套接字(checkRead、checkWrite 和 checkError 列表中的套接字)满足其指定条件或超过 microSeconds 参数时,Select 返回,以先到者为准。将 microSeconds 设置为 -1 指定无限超时。

那么,套接字的状态是什么?

于 2012-10-04T13:11:57.417 回答