1

我得到了一个项目,我必须在没有任何中间服务器的情况下与同行共享文件。我想知道如何知道网络上有多少主机在线以及如何连接到它们。我必须通过Java为我的计算机中的主机粗略地制作路由表。

4

3 回答 3

1

您不需要跟踪任何路由。您只需要知道端点地址。

您可以通过与该主机建立连接来了解该主机是否连接到网络。

您提到不会有中间服务器,因此 NAT 打孔超出了您的问题范围。

作为起点看java.net.Socket类文档。

于 2012-09-30T22:48:53.690 回答
0

我将假设这是在专用网络上。相对包含的东西。让他们通过互联网找到彼此听起来像是一场噩梦。

因此,考虑到这一点,您的同行找到彼此的一个模型可能是选择标准化的端口序列和活动信号。然后,当对等方搜索其他人时,它会简单地遍历网络上的所有 IP,并在该端口号上发出请求。如果它得到一个活动信号,它会将它添加到一个表中。发出信号的计算机也必须记录新来的人。

您必须选择端口序列,以便它们在网络上通常不使用。(相当大)我说顺序是为了加快搜索速度。

为了进一步加快搜索速度,当发送活动信号时,它还可以发送它的对等表和它检查的 IP(以及它以相同方式接收的 IP)。然后新的对等点只需要检查网络上的新 IP,因为带有新程序实例的旧 IP 会自行建立。

希望有帮助

于 2012-09-30T23:04:16.450 回答
0

我建议你不要使用mac地址,如果你把你的dhcp关闭你的路由器会更好(如果你当然可以包括一个........但如果你只能包括一个集线器,你'我猜会被迫使用mac地址)。并为您的ipv4地址使用手动寻址,您将能够轻松连接到其他计算机。

于 2018-03-15T18:51:22.433 回答