2016-09-08 10 views
0

텔넷을 통해 로컬 컴퓨터에서 연결하려고하면 서버를 작성했습니다 (파이썬 3, 트위스트 된, tkinter를 사용했습니다). 텔넷 localhost 포트 ",하지만이"텔넷 ip_address 포트 "를 시도 할 때 그것은 연결되지 않을거야. 질문은 왜입니까? 이를 간단히 말하면 다음과 같습니다.트위스트 된 서버가 인터넷을 통해 연결될 수 없음

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''을 설정했고'포트 포워딩 '을했습니다 (그리고 리눅스 민트에서 실행 중입니다. 방화벽이없는 것 같습니다). 내 IP에서 포트 8123을 스캔 할 때 여기 [link] (http://www.canyouseeme.org/) 포트가 닫혔습니다. 뭐가 잘못 되었나요? – Roman

+0

ISP에서 들어오는 TCP 연결을 허용합니까? 일부는하지 않습니다 –

+0

아마도, 그것을 확인하는 방법을 모르십시오. 하지만 지금 누군가 전화를 걸 때 스카이프가 어떻게 작동하는지 궁금합니다. 또는 급류 (피어 - 투 - 피어 연결), 아마도 거기에 좋은 기사 또는 책을 명확하게, 나는 그것을 읽었습니다. – Roman