2014-10-19 98 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