そのため、外部の Web アドレスに接続されているソケットがあり、特定のメッセージを受信すると切断する必要があります。私は電話をかけてみsocket.close()
ましたsocket.isConnected()
が、それでも真実です。答えを探しても運がない
6 に答える
isConnected()
ソケットへの接続が成功したかどうかのみを通知します。isClosed()
に電話したかどうかがわかりますclose()
。
この人の応答をチェックしてください https://stackoverflow.com/a/3701249/2453771
" 見落としているように見える Socket() を使用すると、Socket.isConnected() は Socket.connect() が呼び出されたかどうかを示します。isClosed() と close() についても同様です。
これらのメソッドの混乱は、アプリケーションの制御下にあるソケットの状態と、プロトコルの制御下にある接続全体の状態を混同した結果です。isConnected() と isClosed() は、ソケットに対して何を行ったかを示します。接続の状態を判断するための読み取りと書き込み以外の API はありません。」
Oracle のドキュメント< ここでは.close()
、接続を呼び出すと閉じられ、 で確認できることがよく説明されていますisClosed()
。
.close() :
このソケットを閉じます。
このソケットの I/O 操作で現在ブロックされているスレッドは、SocketException をスローします。
ソケットが閉じられると、それ以上ネットワークを使用することはできません (つまり、再接続または再バインドすることはできません)。新しいソケットを作成する必要があります。
http://developer.android.com/reference/java/net/Socket.html#close()
返されたデータに対してチェックサムを実行し、正しい値を取得していることを確認してください。その場合、close と try-catch をすべて呼び出しても問題ありません。
デバッガーで監視して、何もリークしていないことを確認できます。