首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于internet的Python聊天p2p系统

基于internet的Python聊天p2p系统
EN

Stack Overflow用户
提问于 2014-10-20 02:04:54
回答 1查看 2K关注 0票数 0

我想建立一个点对点聊天引擎,运行在互联网上。到目前为止,我的代码可以在本地网络上运行,但不能在更远的地方运行。这是因为使用python sockets监听套接字并不能使它们在局域网之外可用。

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

如何告诉路由器打开连接到外部世界的套接字?大概可以这样做,因为BitTorrent等p2p软件必须这样做,以便在客户端之间进行通信。

EN

回答 1

Stack Overflow用户

发布于 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(服务器)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26453691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档