2014-10-19 102 views
0

我想建立一个运行在互联网上的对等聊天引擎。到目前为止,我的代码在本地网络上工作,但没有进一步。这是因为使用python sockets侦听套接字不能使它们在局域网之外可用。通过互联网的Python聊天p2p系统

IP可以被共享知识,也就是说,其他人需要知道我的IP地址(以及我正在侦听的端口)连接到我是可以接受的。

如何告诉路由器打开对外界的套接字?大概可以这样做,因为BitTorrent等p2p软件必须为客户端之间的通信做好准备。

回答

0

如上所述,您必须在路由器上打开特定端口并使用该端口进行通信。由于许多路由器制造商都有各种型号,我建议您查看您要使用的路由器的手册。 代码,你可以检查你的代码是否在局域网上工作,然后看看路由器是否让你列出一些端口。你可以在网上找到很多简单的例子。 这是一个代码,我较早前出场: http://www.mediafire.com/download/vef4q4prkr7be2e/python.socket.zip

,如果你不希望用户乱用端口和路由器设置,我能想到的,例如,第一种选择是这样的:

你设置的REST API在一个接口中能够检索提供的消息(chatRoomName,FromTimestamp,ToTimestamp [,可选地chatRoomPassWord]),但是这与套接字无关,您必须使用简单的HTTP请求(urllib/urllib2)。当然,这可能存在一些解决方法,例如始终列入白名单的端口(如浏览器为80,SSH为22),但您必须搜索此类例外。 请注意,最多1024个端口需要使用特殊权限(admin/sudo)。

p.s.在传统实现中,其他方(客户端)必须知道你的(ip,port)二重奏能够连接到你(服务器)。

+0

是否可以自动执行此操作?假设我希望分发代码;并非所有用户都希望/能够在其路由器上手动设置端口转发。 – rspencer 2014-10-19 18:49:28

+0

是的,我在一分钟内更新了这篇文章。 – 2014-10-19 18:52:27