如何获取客户端IP地址?

我想知道如何在socket(java)中知道服务器端客户端的IP地址。 假设有一个服务器“S”和2个客户端“A”和“B”。 客户端A向我(服务器)发送一些信息,客户端B向我(服务器)发送一些其他信息。 我必须将来自A和B的信息存储在不同表中的数据库中。 如何区分客户端A和B请求。

每个套接字都有一个getInetAddress()方法,该方法返回连接到它的客户端的IP地址。

另一个答案解决了您的核心问题。 我只想补充一点,在某些情况下,您获得的IP地址并不能唯一地标识真正的端点; 即用户的PC。

  • 如果两个用户使用相同的系统进行连接; 即它是一个多用户系统。

  • 如果用户的PC位于NAT网关后面(因为它具有私有/站点本地IP地址),那么您将获得的IP地址将用于网关。

  • 这个地址也是以某种方式被欺骗或劫持的……

您无法从服务器端检测这些情况中的任何一种。 您只需要了解它们,而不是依赖(假定的)客户端IP地址作为确定性的。

所以……

如何区分客户端A和B请求?

在上述任何一种情况下,您无法仅通过IP地址区分A和B. 如果在两个连接都处于活动状态时查看与A和B的连接,它们将具有不同的远程端口号。 但这些端口号仅在连接期间持续。 但是,下次A或B连接时,A可能正在使用B正在使用的远程端口,反之亦然。