2011-11-07 96 views
17

我有一個小的單邊消息發送器,可以工作,但我指定要在代碼中連接的IP,但是,我無法允許套接字接受來自任何IP的連接。這是問題的路線。Python套接字綁定到任何IP?

mySocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
mySocket.bind (('', 2727)) 

的「」是本地主機,和它的作品,如果我手動指定IP,如192.168.1.106,但是,我怎麼能離開它向所有人開放?或者我使用這種錯誤的連接類型?

回答

28

如果要綁定到所有可用的IPv4地址,請指定0.0.0.0作爲您的IP地址。如果您位於路由器後面,希望讓您的套接字可以訪問互聯網,而不是僅在您的局域網上可用,則需要設置端口轉發規則,以便局域網外的用戶可以訪問該服務。

詳情參見以下ServerFault問題上0.0.0.0https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

+0

非常感謝! – Trent

+0

非常明確的指導! –

+0

是否可以綁定到像152.64.87.9這樣的完全自定義ips? – CMCDragonkai

4

綁定至0.0.0.0將允許它接受來自任何IPv4地址可路由到它的連接。

9

綁定到'''0.0.0.0'具有相同的效果,使得轉換到IPv6更容易。

根據操作系統的不同,打開一個socket.AF_INET6套接字將監聽IPv4和IPv6。