如何区分两个IP是否属于同一台计算机?

时间:2011-12-02 15:18:21

标签: java networking ip

我们在不同的计算机上有客户端的主程序和代理(两者)。网络配置可以是任何类型(我们不知道)。代理连接到主程序,目前我们只能获取IP和计算机名称作为信息。如何区分两个IP是否属于同一台计算机?

计算机可能有多个以太网卡。

感谢。

4 个答案:

答案 0 :(得分:5)

只能通过查看IP地址来判断。

某些计算机具有唯一标识符,但您需要JNI才能访问它们,并且您的代码将特定于平台。生成GUID并将其写入计算机上临时文件夹中的文件可能是更好的主意。然后,在该计算机上运行的软件的所有实例都将读取相同的GUID,并且可以在建立连接时将此数据提供给服务器。

答案 1 :(得分:1)

您说您正在获取计算机名称 - 您不能根据该值进行重复删除吗?

从网络中,只给出一个IP地址,你无法分辨。 NAT工作的方式,以及今天的笔记本电脑和无线设备通常在一天之间从网络跳到网络这一事实,你所看到的就是该机器的面向公众的IP地址,很可能在一个组或整个组织中共享机器。

除非您修改代理应用程序以包含唯一标识符(例如MAC地址 - 即使只是告诉您它是一个唯一的NIC,如果机器有多个NIC,也不一定是唯一的机器),你运气不好。 您无法单独从IP地址确定唯一性。

不确定您的用例是什么,但如果用于禁止/跟踪应用程序中的操作,则最好需要某种唯一标识符来让机器访问系统(例如一个用户名)所以你知道你可以禁止/追踪一个应用程序实例,或者一个用户登录到应用程序的任何实例,而不是试图通过IP地址解决这类问题。

答案 2 :(得分:1)

您可以修改代理以发送相关计算机的MAC。除此之外,你无法确定它们是否相同。

答案 3 :(得分:0)

您可以在其计算机中创建一个将公开唯一标识符的服务。然后,您可以使用不同的IP作为主机名来调用此服务,并比较这些值。