0

次の問題があります: ソケットの選択を待機しています。

ArrayList a = new ArrayList();    
a.Add(Socket1);   
print_time_before  
Select(a, null, null, 8000000);  
print_time_after  
  1. 他のアプリケーションがそのソケットに書き込みを行っていませんが、印刷間の時間は 8 秒ではないことがわかります。なにが問題ですか ?

  2. ia a にはソケットが含まれています。これは、読み取るものが何もないか、または ? があることを意味します。

4

1 に答える 1

0

それはマニュアルにあります:

リスニング状態の場合、読みやすさは、Acceptへの呼び出しがブロックせずに成功することを意味します。すでに接続を受け入れている場合、読みやすさはデータを読み取ることができることを意味します。このような場合、すべての受信操作はブロックせずに成功します。読みやすさは、リモートソケットが接続をシャットダウンしたかどうかを示すこともできます。その場合、Receiveの呼び出しはすぐに返され、0バイトが返されます。

Selectは、対象のソケット(checkRead、checkWrite、およびcheckErrorリストのソケット)の少なくとも1つが指定された基準を満たすか、microSecondsパラメーターを超えた場合に戻ります。microSecondsを-1に設定すると、無限のタイムアウトが指定されます。

それで、ソケットの状態は何ですか?

于 2012-10-04T13:11:57.417 に答える