socket.connect()呼び出しのタイムアウトを設定するにはどうすればよいですか? [複製]

StackOverflow https://stackoverflow.com/questions/456891

  •  19-08-2019
  •  | 
  •  

質問

    

この質問にはすでに回答があります:

         

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

socket.poll()とsocket.select()を見てきましたが、ソケットに時間を設定したいだけです。それがシステムのどこかでしなければならない設定であるかどうかは気にしません。また、ポーリングと選択は接続指向の通信では機能しないことを理解しているようです-これは正しいですか?

これが絶対に不可能な場合、poll、select、またはその他の手法を使用して、必要な結果を得るための良い方法は何ですか?

役に立ちましたか?

解決

BeginConnect および非同期プログラミングの概要

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

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

更新:より良い例がありますこちら

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top