我想知道如何在socket(java)中知道服务器端客户端的IP地址。假设有一个服务器“S”和2个客户端“A”和“B”。客户端A向我(服务器)发送一些信息,客户端B向我(服务器)发送一些其他信息。我必须将来自A和B的信息存储在不同表中的数据库中。如何区分客户端A和B请求。
答案 0 :(得分:8)
每个套接字都有一个getInetAddress()
方法,它返回连接到它的客户端的IP地址。
答案 1 :(得分:0)
另一个答案已经解决了你的核心问题。我只想补充一点,在某些情况下,您获得的IP地址并不能唯一地标识真正的端点;即用户的PC。
如果两个用户使用相同的系统进行连接;即它是一个多用户系统。
如果用户的PC位于NAT网关后面(因为它有私有/站点本地IP地址),那么您将获得的IP地址将用于网关。
地址也是以某种方式被欺骗或劫持的......
您无法从服务器端检测这些情况。您只需要了解它们,而不是依赖于(假定的)客户端IP地址作为最终权限。
所以......
如何区分客户端A和B请求?
在上述任何一种情况下,您无法仅通过IP地址区分A和B.如果在两个连接都处于活动状态时查看与A和B的连接,它们将具有不同的远程端口号。但这些端口号仅在连接期间持续。但是,下次A或B连接时,A可能正在使用B正在使用的远程端口,反之亦然。