0

Socketクラスのドキュメントはこちらです。

私のコードatmでは、次のようなコンストラクターを使用しています。

Socket m_Socket = new Socket(m_Address, m_Port);

m_AddressInetAddressでm_Portあり、intです。

この行が実行され、ソケットを作成できない場合、アプリはIOExceptionをスローする前に3秒ほど待機します。

InetAddress、、および別の両方をタイムアウトintに使用するコンストラクターがないことがわかります。今のように3秒ではなく250ms待つ必要があります。これは、ソケットにタイムアウトを設定する必要があることを意味しますが、これを行う方法が見つかりません。メソッドがあることは知っていますが、クラスのインスタンスで呼び出す必要があります。これを行うことで新しいSocketをインスタンス化できますが、InetAddressとポートを設定する必要があり、Socketクラスにはこれを行うためのメソッドがないようです(コンストラクターを除く)。intsetSoTimeout(timeout)Socketm_Socket = new Socket();

実際にソケットを設定しようとする前にタイムアウトを設定するにはどうすればよいですか?

4

2 に答える 2

2

デフォルトのコンストラクターを使用して接続されていないSocketを作成し、タイムアウトを指定してconnect()を呼び出すことができます。

Socket m_Socket = new Socket();
m_Socket.connect(addr,1000);
于 2013-03-20T09:07:12.910 に答える
2

試す

    Socket sock  = new Socket();
    sock.connect(new InetSocketAddress(m_Address, m_Port), 250);
于 2013-03-20T09:12:01.927 に答える