2017-04-06 4 views
0

クライアントソケットを作成しています。このソケットは、いくつかのデータを別のソケットに送り、その応答(ある場合)を待ちます。クライアントソケットが5秒間応答を待つようにしたい。問題は、私がReceiverモードにすると、プログラムは接続された後にのみ実行されるということです。私のプログラムは、応答を得るまでではなく、時間の長さを聞いてほしいです(他のソケットが応答するようにプログラムされていなければ、魔法使いは決してできません)。C#(ソケット)x秒間の接続を待機します。

答えて

1

SocketクラスにはReceiveTimeoutプロパティが含まれています。既定ではInfiniteです。

https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receivetimeout(v=vs.110).aspx

この値を設定するとタイムアウトが経過するまで、その後、Socket.Recieve()メソッドは、だけにしてTimeoutExceptionがスローされます、ブロックします。

Socket sock; 

//socket connection and sending data 
sock.ReceiveTimeout = 5000; 
try { 
    data = sock.Receive(); 
} 
catch (TimeoutException ex) 
{ 
    // it never answered 
} 
+0

実際にはあります。とても有難い! – jeyejow

関連する問題