通过Internet发送UDP数据包

时间:2011-03-31 16:45:24

标签: networking udp packet udpclient

我正在尝试学习P2P /分散网络的一些细节。我的问题如下。假设我有两台名为comp1和comp2的机器。现在comp1在我的家庭网络上设置在路由器后面,comp2位于我的办公室,也在路由器后面。我是否有可能在互联网上来回发送UDP数据包,假设当然端口正确转发?为了更好地了解我正在调查的内容,我试图弄清楚新节点如何在不使用中央服务器的情况下发现现有节点。

谢谢!

2 个答案:

答案 0 :(得分:3)

假设正如您所说,端口正确转发,您可以将UDP数据包发送到路由器后面的2个客户端。

在本地Intranet上检测客户端的一种好方法可能是使用多播,但是这并没有对ISP的支持(至少在英国这里),所以不能依赖它。多播被许多设备发现平台使用,例如mDNS(在Apple的Bonjour中使用)

http://en.wikipedia.org/wiki/Multicast

(它基本上适用于订阅群组,然后向该群组发送消息的客户端)

我认为通过互联网发现新客户的最佳方式是让一个新客户联系的服务器让它知道它们存在,然后集中式服务器会告诉所有其他客户关于你。这用于现代战争2等P2P游戏,这就是“追踪器”在BitTorrent协议中的作用。

这不是完全分散的,但它可能是最容易实现的,也是最可靠的。

答案 1 :(得分:1)

要添加到Dotmister的响应,如果端口未正确转发(例如,路由器未静态配置为转发端口),则必须查看UDP hole punching之类的内容。无论哪种方式,为了发现没有某种中央服务器的新节点,你将不得不依赖某种多播。