2014-05-24 84 views
0

我有一個python套接字應該是監聽端口2022上的所有傳入套接字,並且我啓用了端口轉發以及動態DNS服務。當我連接到同一個網絡,並且我嘗試使用個人計算機的IP地址連接到我的電腦時,它的作用就像一個魅力,但是當我嘗試使用我的網絡的公共IP時,它將不起作用,儘管我已經完成了適當的端口轉發。這裏是我的代碼,它stucks的最後一行,並且不接受網絡外的任何連接:Python套接字不接受外部連接

IPC= '0.0.0.0' 
    PORTC =2022 
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    client_socket.bind((IPC,PORTC)) 
    client_socket.listen(5) 
    connection =client_socket.accept()[0].makefile('wb') 
+0

您是否啓用了防火牆? – glglgl

+0

我有iptables防火牆,但我禁用它。 – user3461604

+0

如果外部連接嘗試將其發送到防火牆,是否檢查了防火牆日誌?你有沒有檢查連接是否確實被轉發到你的電腦? – alvits

回答

0

如果你可以從你的專用網絡中不同的PC連接時,則沒有什麼不對您的Python代碼。幾乎可以肯定的是,您的路由器或端口轉發配置有問題。

請確保您已重新審查了端口轉發設置,並嘗試重新啓動路由器(如果您轉到此路由,請務必確認您的內部分配的IP地址未更改)。

+0

是使用TCP時,我可以連接從不同的PC,但只有當我使用本地IP另一臺機器作爲目標地址,如果我使用網絡的公有IP和端口轉發,則不能建立連接,但它可以與UDP協同工作,因此我知道我的端口轉發設置不是問題 – user3461604

+0

假設本地IP爲'192.168.2.10',你有你的路由器偵聽端口X(任何隨機端口),並轉發到192.168.2.10:2022。然後你用端口X連接到你的公共IP地址,會發生什麼?超時? –

+0

是的,它超時,因爲另一端沒有連接,雖然在路由器上的入侵檢測日誌中看起來連接被轉發到正確的目的地 – user3461604