2016-09-08 30 views
0

我已經寫好服務器(我已經使用python 3,twisted,tkinter),並且一切正常,當我嘗試在本地機器上連接到它時,例如通過telnet,我這樣做 - 「 telnet localhost port「,但是當我嘗試這個」telnet ip_address port「時,它不會被連接。問題是爲什麼?並且爲了簡化這一點,這裏是簡單的代碼:扭曲的服務器無法通過互聯網連接

from twisted.internet import reactor, protocol 

class Echo(protocol.Protocol): 

    def dataReceived(self, data): 
     self.transport.write(data) 

def main(): 
    factory = protocol.ServerFactory() 
    factory.protocol = Echo 
    reactor.listenTCP(8123, factory) 
    reactor.run() 

if __name__ == '__main__': 
    main() 

回答

0

這是一個需要做什麼的概述。要開始實施,您必須綁定到localhost以外的其他接口。或者,你可以聽所有的接口(即interface = '0.0.0.')。在你的代碼,你需要在界面添加到您的reactor.listenTCP()功能:

reactor.listenTCP(8123, factory, interface='0.0.0.0') 

下一步,您必須確保傳入TCP流量被允許你的路由器和服務器上。您還必須將流量從傳入的WAN接口從路由器轉發到服務器上的接口。在服務器端,您必須確保您的防火牆允許傳入流量。假設您的ISP提供的WAN IP地址爲72.10.20.30,並且您的Twisted服務器正在服務器的接口192.168.1.100:8123上運行。進入您的路由器並尋找端口轉發或NAT功能,然後設置它們,以便您的WAN IP請求被轉發到您的服務器的IP。

對這些步驟採取額外的預防措施,因爲這會使您的網絡非常脆弱!使用OpenShift或Heroku等服務託管您的Python項目可能會更好。

+0

感謝您的回覆,但它仍然無效。我設置了'interface ='0.0.0.0'',我做了'端口轉發'(並且我在Linux Mint上運行,猜測我沒有防火牆)。例如,當我在我的IP上掃描端口8123時,[鏈接](http://www.canyouseeme.org/)端口已關閉,出了什麼問題? – Roman

+0

您的ISP允許傳入TCP連接嗎?有些人不會 –

+0

也許,不知道如何檢查它。但是現在我想知道當有人試圖打電話給我時,Skype如何工作?或者洪流(點對點連接),也許有很好的文章或書來澄清它,我會讀它。 – Roman

相關問題