2024-05-14 09:33:48 发布
网友
我想建立一个点对点聊天引擎运行在互联网上。到目前为止,我的代码可以在本地网络上工作,但不能再进一步。这是因为使用pythonsockets监听套接字并不能使它们在局域网外可用。在
sockets
IP是可接受的共享知识,即其他人需要知道我的IP地址(以及我正在监听的端口)才能连接到我。在
如何告诉路由器向外界打开一个插座?想必这是可以做到的,因为p2p软件,如BitTorrent必须做到这一点,以便在客户端之间进行通信。在
正如你所提到的,你必须在路由器上打开一个特定的端口并使用该端口进行通信。由于有许多路由器制造商,每个制造商都有各种型号,我建议您查看手册,了解您想要使用的路由器。 对于代码,你可以检查你的代码是否在局域网上工作,然后看看路由器是否让你列出一些端口的白名单。你可以在网上找到许多简单的例子。 这是我以前玩过的一段代码: http://www.mediafire.com/download/vef4q4prkr7be2e/python.socket.zip
如果你不想让用户搞砸端口和路由器设置之类的事情,我可以想到的第一个选择是:
您设置了一个restapi,在一个接口中可以检索提供的消息(chatRoomName,FromTimestamp,ToTimestamp[,可选chatRoomPassWord]),但这与套接字无关,您必须使用简单的HTTP请求(urllib/urlib2)。当然,可能存在一些解决方法,比如总是白名单的端口(比如浏览器为80,SSH为22),但是您必须搜索这样的异常。 请注意,最多1024个端口需要使用特殊权限(admin/sudo)。在
在传统实现中,另一方(客户机)必须知道您的(ip,端口)duo才能连接到you(服务器)。在
正如你所提到的,你必须在路由器上打开一个特定的端口并使用该端口进行通信。由于有许多路由器制造商,每个制造商都有各种型号,我建议您查看手册,了解您想要使用的路由器。 对于代码,你可以检查你的代码是否在局域网上工作,然后看看路由器是否让你列出一些端口的白名单。你可以在网上找到许多简单的例子。 这是我以前玩过的一段代码: http://www.mediafire.com/download/vef4q4prkr7be2e/python.socket.zip
如果你不想让用户搞砸端口和路由器设置之类的事情,我可以想到的第一个选择是:
您设置了一个restapi,在一个接口中可以检索提供的消息(chatRoomName,FromTimestamp,ToTimestamp[,可选chatRoomPassWord]),但这与套接字无关,您必须使用简单的HTTP请求(urllib/urlib2)。当然,可能存在一些解决方法,比如总是白名单的端口(比如浏览器为80,SSH为22),但是您必须搜索这样的异常。 请注意,最多1024个端口需要使用特殊权限(admin/sudo)。在
在传统实现中,另一方(客户机)必须知道您的(ip,端口)duo才能连接到you(服务器)。在
相关问题 更多 >
编程相关推荐