我得到了一个项目,我必须在没有任何中间服务器的情况下与对象共享文件。我想知道如何知道网络上有多少主机在线以及如何连接它们。我必须通过Java粗略地为我的计算机中的主机制作路由表。
答案 0 :(得分:1)
您无需保留任何路由跟踪。您所需要的只是知道端点地址。
您可以通过与该主机建立连接来确定主机是否已连接到网络。
您提到没有中间服务器,因此NAT打孔超出了您的问题范围。
作为起点,请查看java.net.Socket
类文档。
答案 1 :(得分:0)
我将假设这是在私人网络上。相对含有的东西。让他们通过互联网找到对方听起来像是一场噩梦。
因此,鉴于此,您的同伴找到彼此的一个模型可能是选择标准化的端口序列和活动信号。然后,当对等体搜索其他对象时,它只是通过网络上的所有IP并对该端口号发出请求。如果它获得一个活动信号,则将其添加到表中。已发信号的计算机也必须记录新来的人。
您必须选择端口序列,以便它们在网络上通常不使用。 (相当大)我说序列是为了加快搜索速度。
为了加快搜索速度,当发送活动信号时,它还可以发送它的对等表和它检查的IP(以及以相同方式接收的IP)。然后,新对等体只需检查网络上的新IP,因为具有该程序的新实例的旧IP将自行建立。
希望有所帮助
答案 2 :(得分:0)
我建议你不要使用mac地址,如果你把你的dhcp从你的路由器上移开会更好(如果你可以包括一个当然........但如果你只是可以包括一个你将被强制使用的中心,我想使用mac地址)。并为你的ipv4地址使用手动寻址,你将能够轻松连接到其他计算机。