我目前正在iPad上开发一个应用程序,它连接到本地网络上的客户端电脑并发送消息。 在阅读以下教程后,我在客户端安装了python应用程序: http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
它适用于本地连接。 应用程序打开一个连接端口,我的iPad应用程序使用客户端的本地IP和端口进行连接。
如果我想连接到公共IP会怎样? 我试过了,它不起作用。我从以下站点获得了客户端的公共IP: http://www.whatismyip.com/
我使用相同的python应用程序打开一个端口。 我认为,我必须在路由器上打开一个端口并将其转发给客户端。但是有没有办法在不必访问我的路由器设置的情况下完成它。我想实现即时访问,这样用户就不必担心设置了。
就像Skype一样,或多人游戏或其他在线服务。我的问题有点普遍,不具体。非常遗憾。我希望它也可以帮助其他人。
答案 0 :(得分:3)
假设您尝试联系的计算机位于路由器/ NAT设备后面。换句话说,它没有直接连接到互联网。
路由器负责决定允许哪些数据报在私有网络和公共网络之间移动,以及它们应该去哪里。
Skype,游戏和在线服务都会从专用网络内部向外发送到公共网络上的服务器。传出网络流量会触发临时NAT(网络地址转换)规则,该规则允许从目标返回的数据报录路由回私有主机。
但是除非您在路由器/ NAT中专门设置规则告知其在何处发送数据,否则将阻止其他传入流量。如何知道将数据转发到哪个地址?
因此,只有三种方法可以与NAT路由器后面的机器进行通信:
为主机提供完全连接的唯一方法是让它拥有自己正确路由的公共IP地址。否则,NAT的重点是限制连接。