Java デスクトップ サーバーとそれに接続されている複数の Android クライアントを使用しています。サーバー側では、どのクライアントがソケット TCP/IP によってメッセージを送信したかを識別し、その 1 つのクライアントにのみ応答を送信し、他のクライアントには応答を送信しないようにする必要があります。
クライアントのすべてのソケットを ArrayList に格納します。
最初に、私が試したがうまくいかなかった 2 つの方法を示します。
-- クライアントの IP アドレス。クライアントで socket.getLocalSocketAddress() を呼び出し、サーバーで socket.getRemoteSocketAddress() を呼び出してこれを取得しますが、一致することはありません。たとえば、クライアント XXX.XXX.11.17 とサーバー XXX.XXX.0.13 で取得しましたが、同じ接続では同じであると想定されています。
-- ポート番号。クライアントで getLocalPort() を呼び出し、サーバーで getPort() を呼び出してこれを取得します。はい、これは完全に機能し、番号が一致するため、これを使用できます。ただし、ランダムに選択されたポート番号が2 つの異なるクライアントが同じである可能性があります。可能性は低いですが可能です。つまり、それらが一意であるという保証はありません。
私が使用できる代替手段は何ですか?