2

我有一个连接到可能已关闭的主机的应用程序。如果主机关闭,我不想等待 30 秒左右的时间超时。我目前正在使用阻塞套接字。

我一直在查看 socket.poll() 和 socket.select() 但我宁愿在套接字上设置一个时间。我不介意这是否是我必须在系统中某处进行的设置。另外,我似乎理解 poll 和 select 不适用于面向连接的通信 - 这是正确的吗?

如果这绝对不可能,那么使用 poll、select 或其他一些技术获得我想要的结果的好方法是什么?

4

1 回答 1

2

请参阅BeginConnect异步编程概述

IAsyncResult asr = socket.BeginConnect( ip, port, null, null );

bool res = asr.AsyncWaitHandle.WaitOne( 10000, true );  // 10 sec timeout

更新:这里有一个更好的例子

于 2009-01-19T08:48:52.547 回答