我有一个应用程序连接到可能已关闭的主机。如果主机出现故障,我不想等待超时所需的30秒钟。我目前正在使用阻塞套接字。
我一直在看socket.poll()和socket.select(),但我宁愿在套接字上设置时间。我不介意它是否是我必须在系统中的某个地方做的设置。此外,我似乎明白民意调查和选择不适用于面向连接的通信 - 这是正确的吗?
如果这绝对不可能,那么使用民意调查,选择或其他技术获得我想要的结果的好方法是什么?
答案 0 :(得分:2)
请参阅BeginConnect和Asynchronous Programming Overview
IAsyncResult asr = socket.BeginConnect( ip, port, null, null );
bool res = asr.AsyncWaitHandle.WaitOne( 10000, true ); // 10 sec timeout
更新:有一个更好的例子here。