2017-08-09 55 views
-2

我写的基于断码在此链接通讯软件:将消息发送到计算机断网蟒

http://code.activestate.com/recipes/578802-send-messages-between-computers/

我爱这个代码和它的作品很好,但它不会让我将消息发送到不在我的网络上的计算机。我想知道是否有办法修改此代码,以便我可以在任何地方向计算机发送消息。

任何帮助或建议将是伟大的。

+0

如果计算机在万维网上,那么它在某种程度上*在你的网络上,它可能没有一个你可以与之通话的面向公众的IP地址。 – turbulencetoo

+0

机会来源和/或目标网络在NAT后面。在这种情况下,有两种通信方式:使用具有公共地址的中央服务器来中继客户端之间的消息(如IRC)或在每个NAT防火墙中设置端口以允许通信。有更高级别的库处理网络通信,处理普通套接字是痛苦的,检查龙卷风或扭曲。 –

回答

0

该代码应该工作。 您可以使用ping来确认目的地吗? 如果您的计算机位于内部网络上,外部机器可能只能看到您的NAT地址,那么这是您内部网络向外界呈现的地址。此外,您尝试发送给的计算机还需要有外部IP,这不是为内部网络保留的地址。 理想情况下,您希望与之聊天的两台计算机都将具有非内部IP。

+0

这个答案在事实上是正确的,但也可能只是一个评论。 –

+0

如何获得非内部IP地址? – Max

+0

如果它应该在任何地方工作,而不是为什么它会在网站上说它只能在你的网络上工作? – Max

-1

该代码配方使用数据报套接字(UDP协议),通常它们被网关/代理/防火墙阻止。您可能不得不改用TCP来代替。

+0

我不认为这很重要。大多数网络使用多对一的NAT(源NAT),除非您在防火墙中设置端口转发,否则无法从公共网络连接UDP和TCP。 “阻塞”是源NAT的自然副作用。 –

+0

是的,我想我也对UDP多播感到困惑。通常普通的UDP路由很好,我猜(除了NAT问题) –