0

私は今、Android/Java Socket クラスの使用方法を学んでおり、リモート コンピューターから送信された Close (実際には FIN) に特定の方法で応答する必要があります。

Socket クラスはイベント駆動型 ( http://developer.android.com/reference/java/net/Socket.html ) ではないようです。つまり、 onThisまたはonThatハンドラーがないようです。リモート コンピュータがいつ FIN を送信したかを知る最善の方法は?

現在、Android OS は ACK で FIN に応答しますが、アプリケーションでも何かを行う必要があるため、アプリケーションにこれを警告する方法が必要です。

前もって感謝します!

4

1 に答える 1

0

あなたは、アプリケーションプログラマーとして、 FINやACKについてさえにする必要があることはめったにありません。それらはTCP/IPスタックに組み込まれており、OSがすべてを処理します。あなたは自分の利益のために低レベルになりすぎています。あなたが本当にそのようなものをいじりたいのなら、あなたは使うことができませんSocket-あなたは生のソケットなどに入る必要があるでしょう、それはあなたが準備ができているよりずっと多くの仕事です。(JavaとAndroidのどちらでそれができるかはわかりません。)

接続の反対側(基本的にはFIN)を閉じるもう一方の端を検出する場合は、ソケットから読み取るだけです。もう一方の端が送信側をシャットダウンした場合、読み取りは0バイトを読み取ります(または-1、大量のバイトを読み取ろうとしているのか、1つだけを読み取ろうとしているのかに応じて、を返します)。

于 2012-06-04T17:41:34.887 に答える