9

そのため、外部の Web アドレスに接続されているソケットがあり、特定のメッセージを受信すると切断する必要があります。私は電話をかけてみsocket.close()ましたsocket.isConnected()が、それでも真実です。答えを探しても運がない

4

6 に答える 6

5

isConnected()ソケットへの接続が成功したかどうかのみを通知します。isClosed()に電話したかどうかがわかりますclose()

この人の応答をチェックしてください https://stackoverflow.com/a/3701249/2453771

于 2013-08-23T16:34:01.443 に答える
0

" 見落としているように見える Socket() を使用すると、Socket.isConnected() は Socket.connect() が呼び出されたかどうかを示します。isClosed() と close() についても同様です。

これらのメソッドの混乱は、アプリケーションの制御下にあるソケットの状態と、プロトコルの制御下にある接続全体の状態を混同した結果です。isConnected() と isClosed() は、ソケットに対して何を行ったかを示します。接続の状態を判断するための読み取りと書き込み以外の API はありません。」

Oracle のドキュメント< ここでは.close()、接続を呼び出すと閉じられ、 で確認できることがよく説明されていますisClosed()

.close() :

このソケットを閉じます。

このソケットの I/O 操作で現在ブロックされているスレッドは、SocketException をスローします。

ソケットが閉じられると、それ以上ネットワークを使用することはできません (つまり、再接続または再バインドすることはできません)。新しいソケットを作成する必要があります。

于 2013-08-23T16:41:01.700 に答える
-1

http://developer.android.com/reference/java/net/Socket.html#close()

返されたデータに対してチェックサムを実行し、正しい値を取得していることを確認してください。その場合、close と try-catch をすべて呼び出しても問題ありません。

デバッガーで監視して、何もリークしていないことを確認できます。

于 2013-08-23T16:50:14.633 に答える