我想建立一个点对点聊天引擎,运行在互联网上。到目前为止,我的代码可以在本地网络上运行,但不能在更远的地方运行。这是因为使用python sockets监听套接字并不能使它们在局域网之外可用。
IP共享知识是可以接受的,即其他人需要知道我的IP地址(以及我正在侦听的端口)才能连接到我。
如何告诉路由器打开连接到外部世界的套接字?大概可以这样做,因为BitTorrent等p2p软件必须这样做,以便在客户端之间进行通信。
发布于 2014-10-20 02:46:01
正如您所提到的,您必须打开路由器上的特定端口,并使用该端口进行通信。由于有许多路由器制造商,每个都有不同的型号,我建议您查看您要使用的路由器的手册。对于代码,您可以检查您的代码是否在LAN上工作,然后查看路由器是否让您将一些端口列入白名单。你可以在网上找到许多简单的例子。这是我以前玩过的代码:http://www.mediafire.com/download/vef4q4prkr7be2e/python.socket.zip
如果你不想让用户弄乱端口和路由器设置之类的东西,我能想到的第一个选择是:
你设置一个REST API,在一个接口中可以检索提供的消息(chatRoomName,FromTimestamp,ToTimestamp,可选的chatRoomPassWord),但这与套接字无关,你必须使用简单的HTTP请求(urllib/urllib2)。当然,可能有一些解决方法可以解决这个问题,比如总是列出白名单的端口(比如浏览器的端口是80,SSH的端口是22 ),但是您必须搜索此类异常。请注意,最多1024个端口需要使用特殊权限(admin/sudo)。
附注:在传统的实现中,其他方(客户端)必须知道您的(ip,端口) duo才能连接到you(服务器)。
https://stackoverflow.com/questions/26453691
复制相似问题