2013-02-22 4 views
0

나는 파이썬에서 채팅 앱의 코드를 발견했습니다,하지만 난 그것으로 나를 도울 수있는 사이트에있는 저자 또는 사람에 대해 아무것도 찾을 수 없습니다 전체 코드 : http://files.myopera.com/manojsheokand666/blog/chat.py파이썬 소켓 채팅 문제

난에 .. 기분이 뭔가가 누락지고있어 나는, 나는 그것을 수정하고 배우려고이 할 필요가 뭔가 더

나는 약간의 독서를했고이 내입니다 세 번째로이 게시물을 편집하는 중입니다 .. 지금 오류없이 연결 상태를 유지할 수 있지만 보낼 때 (유형 i n) 송수신하지 않는 무언가. 하지만 두 번째 앱을 다른 '사람'으로 실행하려고 할 때마다 '사람'이 연결된 첫 번째 앱에서 다음 오류로 인해 첫 번째 앱이 중단됩니다.

KeyError : ('127.0 .0.1 ', 62833) - 포트는 항상 다릅니다.

두 번째 앱은 그대로 있지만 앱을 다시 실행하면 아무 것도 수신하지 못하거나 충돌이 발생합니다.

내가 무슨 짓을 :이 작업을 얻을 수있는 다른 방법이

host = gethostbyname(gethostname()) #this actually gets 192.168.0.101 (my local IP to the router) 
s.setsockopt(SOL_IP,IP_ADD_MEMBERSHIP,\ 
      inet_aton(addr)+inet_aton(host)) #i write 225.0.0.1 as 'addr' 

있습니까? 나는 간단한 서버/텔넷을 사용하여 채팅을 할 수 있지만이 GUI (tkinter)는 나를 복잡하게 만든다고 생각하고 어떻게 작동하는지 배우고 싶다. 고마워!

+0

http://msdn.microsoft.com/en-gb/library/windows/desktop/ms740668%28v=vs.85%29.aspx에서 오류 10049로 스크롤하십시오. 오류에 대한 설명이 나와 있습니다. – chrisw

+0

알았어.하지만 0.0.0.0에 묶으려는 중이라면 그렇게 생각하지 않아? 그것은 어디에서나 바인딩 할 수 있다고 말하는 것입니까? –

+0

코드를 더 추가하면 사람들이 대답하는 것이 더 도움이 될 것입니다. 코드 스 니펫에 아무 것도 보이지 않습니다. – chrisw

답변

0

IP_ADD_MEMBERSHIP 옵션의 정의에서 첫 번째 주소는 멀티 캐스트 그룹 주소이고 두 번째 주소는 인터페이스 주소입니다.

첫 번째 주소로 127.0.0.1을 사용하고 있습니다. 이것은 멀티 캐스트 주소가 아닙니다.

멀티 캐스트 주소의 범위는 224.0.0.0/4입니다 (예 : 224.0.0.1 - 239.255.255.254, 네트워크 및 브로드 캐스트 주소 제외). 멀티 캐스트 주소 (동일한 네트워크 세그먼트에있는 모든 호스트) 첫 번째를 사용하여 예를 들어

는 잘 작동합니다 :

>>> s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
>>> s.setsockopt(socket.SOL_IP,socket.IP_ADD_MEMBERSHIP, 
       socket.inet_aton('224.0.0.1')+socket.inet_aton('0.0.0.0')) 

확인 멀티 캐스트 주소에 대한 자세한 내용은이 reference.

애플리케이션에 224/4의 할당되지 않은 멀티 캐스트 주소를 선택해야합니다 (예 : 244.0.2.0과 같은 애드혹 범위의 모든 항목). 멀티 캐스트 주소는 인터페이스 주소와 아무 관련이 없습니다 ('0.0.0.0'을 사용하면 모든 로컬 인터페이스를 멀티 캐스트 주소와 연결합니다. 즉, 모든 인터페이스를 사용하여 해당 그룹에 대한 멀티 캐스트 패킷을 수신/전송할 수 있습니다).

+0

! 고마워 ..하지만 난 여전히 문제가있다. (다른 코드가 잘못되었다고 생각하기 시작했거나 작동하지 못한다.) * 원본 코드에 더 많은 코드가 추가됨 * –

+0

원본 게시하다? – isedev

+0

나는 이것을 알고 지적 해 주셔서 감사합니다.귀하의 답변도 받아 들여집니다! –