2016-09-08 3 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') 

Далее вы должны будете обеспечить входящий трафик разрешен на маршрутизаторе и сервере. Вам также придется пересылать трафик с вашего входящего интерфейса WAN с вашего маршрутизатора на интерфейс на вашем сервере. На стороне сервера вы должны будете убедиться, что входящий трафик разрешен вашим брандмауэром. Предположим, что ваш IP-адрес WAN, предоставленный вашим провайдером, составляет 72.10.20.30, а ваш витой сервер работает на сервере 192.168.1.100:8123. Перейдите на свой маршрутизатор и найдите функции Port Forward или NAT, а затем установите их так, чтобы запросы на ваш WAN-IP были перенаправлены на IP-адрес вашего сервера.

Примите дополнительные меры предосторожности при выполнении этих действий, так как это может привести к очень уязвимой сети! Вероятно, лучше использовать такие сервисы, как OpenShift или Heroku, для размещения ваших проектов Python.

+0

спасибо за ваш ответ, но он по-прежнему не работает. Я установил 'interface = '0.0.0.0'', и я сделал« переадресацию портов »(и я работаю на Linux Mint, думаю, у меня нет брандмауэров). Когда я сканирую порт 8123 на моем IP, например здесь - [link] (http://www.canyouseeme.org/) порт закрыт, что случилось? – Roman

+0

Предоставляет ли ваш интернет-провайдер входящие TCP-соединения? Некоторые не делают –

+0

Может быть, не знаю, как это проверить. Но теперь мне интересно, как работает Skype, когда кто-то пытается позвонить мне? Или торрент (одноранговое соединение), может быть, есть хорошая статья или книга, чтобы прояснить ее, я бы ее прочитал. – Roman

Смежные вопросы