来自同一台机器的不同IP地址

时间:2018-03-29 13:08:18

标签: java networking dns

我有一个客户端 - 服务器设置。客户端连接到服务器并询问下一个要执行的程序。获取请求后,服务器使用下面的代码块检查套接字另一端的主机名,该代码块返回" 127.0.0.1"

socket.getInetAddress().getCanonicalHostName();

获取程序名称后,客户端创建一个也尝试连接到服务器的进程,但这次上面的调用返回不同的地址。 " mypc.foo.com" 在此屏蔽域名

这种行为让我烦恼,因为我无法查找hashmap,其中存储了由机器ip分组的所有进程详细信息。

这是java查找实现中的错误还是我遗漏了一些东西。请建议其他一些方法来执行此查找

1 个答案:

答案 0 :(得分:1)

我感觉socket.getInetAddress()返回你自己的地址,所以基本上总是127.0.0.1。尝试使用socket.getRemoteSocketAddress() - 获取对方的IP地址。

使用IP地址来匹配不同的用户通常是一个坏主意。首先,它们可以位于某个网络中或防火墙后面,您可以从来自同一IP地址的多个客户端获取请求。此外,您无法保证它是静态或动态IP。此外,如果您的应用程序运行在一些奇怪的路由器的奇怪网络设置中,您最终可能会从路由器IP地址获取所有请求。

更好的设计是在服务器和客户端之间共享一些令牌,并将其用于识别。这听起来很熟悉吗?例如,http会话就像那样;)

相关问题