Networking 通过Internet发送UDP数据包

Networking 通过Internet发送UDP数据包,networking,udp,packet,udpclient,Networking,Udp,Packet,Udpclient,我试图了解P2P/分散网络的一些细节。我的问题如下。假设我有两台名为comp1和comp2的机器。现在comp1安装在我的家庭网络上的路由器后面,而comp2则位于我的办公室中的路由器后面。假设端口被正确转发,我是否可以像这样在Internet上来回发送UDP数据包?为了更深入地了解我正在研究的内容,我试图找出一个新节点如何在不使用中央服务器的情况下发现现有节点 谢谢大家! 假设,正如您所说,端口转发正确,您可以将UDP数据包发送到路由器后面的两个客户端 检测本地intranet上的客户端的一个

我试图了解P2P/分散网络的一些细节。我的问题如下。假设我有两台名为comp1和comp2的机器。现在comp1安装在我的家庭网络上的路由器后面,而comp2则位于我的办公室中的路由器后面。假设端口被正确转发,我是否可以像这样在Internet上来回发送UDP数据包?为了更深入地了解我正在研究的内容,我试图找出一个新节点如何在不使用中央服务器的情况下发现现有节点


谢谢大家!

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

检测本地intranet上的客户端的一个好方法可能是使用多播,但是这在ISP上没有广泛的支持(至少在英国是这样),因此不能依赖。多播被许多设备发现平台使用,例如MDN(在苹果的Bonjour中使用)

(它主要通过客户端订阅组,然后向该组发送消息来工作)

我认为通过互联网发现新客户的最好方法是让新客户联系一台服务器,让它知道它们的存在,然后集中服务器会告诉所有其他客户关于你的情况。例如,在诸如《现代战争2》这样的P2P游戏中,这就是“跟踪器”在BitTorrent协议中所做的


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

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

是的,这是可能的。您使用的是哪种编程语言?目前,我正在使用python,但如果需要,我愿意进行更改。