2

ダウンしている可能性のあるホストに接続するアプリがあります。ホストがダウンしている場合、タイムアウトにかかる 30 秒ほど待ちたくありません。現在、ブロッキングソケットを使用しています。

私は socket.poll() と socket.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 に答える