我正在使用 Java 桌面服务器和连接到它的多个 Android 客户端。在服务器端,我需要确定哪个客户端通过套接字 TCP/IP 向我发送了一条消息,并仅向该客户端发送响应,而不向其他客户端发送响应。
我会将客户端的所有套接字存储在一个 ArrayList 中。
首先,这是我尝试过的两种不起作用的方法;
-- 客户端的IP地址,通过在客户端调用socket.getLocalSocketAddress()和在服务器调用socket.getRemoteSocketAddress()来获取,但是它们永远不匹配。例如,我进入了客户端 XXX.XXX.11.17 和服务器 XXX.XXX.0.13,对于相同的连接,它们应该是相同的。
-- 端口号,通过在客户端调用 getLocalPort() 和在服务器中调用 getPort() 来获取,是的,这完美地工作并且数字匹配,所以我可以使用它,但是有可能随机选择的端口号在两个不同的客户端可能是相同的。不太可能但可能。所以这意味着不能保证它们是独一无二的。
我可以使用的替代方法是什么?