2014-10-19 10 views
0

인터넷을 통해 실행되는 피어 투 피어 채팅 엔진을 만들고 싶습니다. 지금까지 내 코드는 로컬 네트워크에서 작동하지만 더 이상 작동하지 않습니다. 이는 파이썬 sockets을 사용하여 소켓에서 수신 대기로 인해 LAN 외부에서 사용할 수 없기 때문입니다.인터넷을 통해 Python 채팅 P2P 시스템

IP는 지식을 공유 할 수 있습니다. 즉, 다른 사람이 나와 연결하기 위해 내 IP 주소 (및 듣고있는 포트)를 알아야 할 수도 있습니다.

외부 세계에 소켓을 열려면 라우터에 어떻게 알리는가? 아마도 BitTorrent와 같은 P2P 소프트웨어는 클라이언트 간의 통신을 위해이를 수행해야하기 때문에이 작업을 수행 할 수 있습니다.

답변

0

언급했듯이 라우터에서 특정 포트를 열고 해당 포트를 통신에 사용해야합니다. 다양한 모델의 라우터 제조업체가 많기 때문에 사용하려는 라우터의 설명서를 확인하십시오. 코드의 경우 LAN에서 코드가 작동하는지 확인한 다음 라우터에서 일부 포트를 화이트리스트로 보는지 확인할 수 있습니다. 당신은 온라인에서 많은 간단한 예제를 발견 할 수 있습니다.

당신 설정 : http://www.mediafire.com/download/vef4q4prkr7be2e/python.socket.zip

당신이 포트와 라우터 설정 및 내가 생각할 수있는 등, 첫번째 대안으로 엉망 사용자를하지 않으려면이된다 이 내가 언젠가 전에 연주 코드는 REST API는 하나의 인터페이스에서 (chatRoomName, FromTimestamp, ToTimestamp [선택 사항으로 chatRoomPassWord]) 제공하는 메시지를 검색 할 수 있지만 소켓과 아무 관계가 없으므로 간단한 HTTP 요청 (urllib/urllib2)을 사용해야합니다. 물론 항상 화이트리스트에있는 포트 (예 : 브라우저의 경우 80, SSH의 경우 22)와 같은 몇 가지 해결 방법이 있지만 이러한 예외를 검색해야합니다. 최대 1024 개의 포트를 사용하려면 특별한 권한 (admin/sudo)이 필요합니다.

p.s. 전통적인 구현에서 다른 파티 (클라이언트)는 당신 (서버)에 연결할 수 있도록 (ip, port) 듀오를 알아야합니다.

+0

자동으로 처리 할 수 ​​있습니까? 코드를 배포하고 싶습니다. 모든 사용자가 자신의 라우터에서 포트 포워딩을 수동으로 설정하기를 원하지는 않을 것입니다. – rspencer

+0

예, 잠시 후에 소식을 업데이트하고 있습니다. –