如何获取客户端IP地址?

时间:2012-01-22 06:28:14

标签: java sockets java-ee

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:0)

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

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

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

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

您无法从服务器端检测这些情况。您只需要了解它们,而不是依赖于(假定的)客户端IP地址作为最终权限。

所以......

  

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

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

相关问题