파이썬 udp 예제

첫 번째 버전에서는 동등한 C 코드를 나란히 테스트했습니다. C 코드가 작동했고 파이썬 코드는 작동하지 않았습니다. 따라서, 나는 특별한 라우터, 스위치, 허브 문제를 배제했다. 그러나 두 번째 버전에서는 파이썬 코드를 실행했습니다. vis-à-vis C 코드를 테스트하지 않았습니다. 솔, 나는 확실히, 다시, 그것을 vis-à-vis C 코드를 시도해야합니다. — LionKimbro 2005-05-09 22:56:26 위의 프로그램은 포트 8888에서 UDP 서버를 시작합니다. 터미널에서 프로그램을 실행합니다. 프로그램을 테스트하려면 다른 터미널을 열고 netcat 유틸리티를 사용하여 이 서버에 연결합니다. 다음은 위의 멀티 캐스팅 예제가 내 컴퓨터에서 작동하지 않지만 http://sourceforge.net/projects/pyzeroconf 코드를 사용하여 해결할 수 있었습니다. 다음 예제를 시도해 보십시오. 위의 예제에서 bind() 호출이 누락되었습니다.

IP 라우팅 테이블 {즉, os.system(`route add 224.51.105.104 eth0`)}에 멀티캐스트 경로 설정이 있는 경우 이 작업은 확인됩니다.} 그러나 bind() 또는 경로가 없으면 커널이 데이터를 전송할 네트워크 인터페이스를 결정하지 않고 오류를 반환합니다. “소켓 대 네트워크 인터페이스” 매핑을 정의하는 다른 방법이 있을 수 있지만, 그 매핑이 무엇인지 잊어 버렸습니다. (크리스 데이비드) =UPDATE:= 최종 UDP 멀티 캐스팅 예제 코드는 http://sourceforge.net/projects/pyzeroconf PyZeroConf에서 찾을 수 있습니다 (“4sl” 구조체 패킹에 “=”를 추가했습니다. 이전 버전과 새 버전이 모두 32 비트 컴퓨터에서 작동하지만 구조형 모듈의 파이썬 설명서는 “l”이 LP64 또는 LPI64 플랫폼에서 64 비트가 될 것이라고 제안하므로 추가하는 것이 신중할 것이라고 생각했습니다. — Kragen Sitaker 2010-04-28 07:03:00) 또한, 여기에 더 파이썬으로 코드를 개선하는 방법에 대한 몇 가지 제안입니다 :이 튜토리얼에서 나는 당신이 CPython 3.3 및 파이썬의 소켓 모듈을 사용하여 자신의 UDP 채팅 서버를 설정할 수있는 방법을 정확하게 보여 줄 것이다. 최종 제품은 특정 포트를 통해 모든 연결 및 메시지를 수신 수신하고 콘솔에 메시지를 인쇄하는 서버가 됩니다. 이것은 나중에 응답을 듣는 모든 당사자에게 수신 된 메시지를 브로드 캐스트하는 채팅 서버를 만들기 위해 확장 될 수 있습니다. 이 시점에서, 나는 생각하기 시작했다 : “파이썬 멀티 캐스트는 단순히 작동하지 않습니다.” 멀티 캐스트의 공식 예는 /usr/share/doc/python2.3/example/Demo/sockets/mcast.py(적어도 데비안 사지에서, 적어도 파이썬 예제를 설치한 후)에서 찾을 수 있습니다. 그것은 내 컴퓨터에서 작동하지만, 나는 아직 다른 컴퓨터에서 실행을 시도하지 않았습니다. — — 200.138.245.121 2006-08-09 03:20:30 파일 전송과 같은 이 예제를 확장하는 것을 고려하면 UDP가 신뢰할 수 없다는 점에 유의하십시오.

따라서 패킷이 분실되고 패킷이 순서대로 도착하는 것을 처리해야합니다. 실제로 신뢰할 수 있는 것을 얻으려면 UDP 위에 TCP와 유사한 것을 구현해야 하며 대신 TCP를 사용하는 것이 좋습니다. 이봐, 예를 들어 호스트 = `localhost`와 같은 IP 주소로 로컬 호스트를 변경합니다. 호스트 = `192.168.4.33`; 이것은 IP 주소인 나는 하나의 작은 변화와 함께, 리눅스 플랫폼에서 잘 작동하기 위해 위의 예를 얻을 수 있었다. 나는 mreq를 만들기위한 팩 문에 “4sl”을 넣어야했습니다. 내가 4를하지 않았을 때, 팩 문은 단지 첫 번째 옥텟 (어떻게 든 다른 옥텟을 떨어 뜨리는)을 사용하는 것처럼 보이므로 234.0.0.0 ip에서 멀티 캐스트 “리스너”만 만들 수 있습니다. 몇 가지 디버깅 후, 나는 inet_aton에서 모든 4 옥텟을 얻을 수 밖에 “s”앞에 4를 넣어, 모든 것이 잘 작동했다. 희망이 도움이 됩니다. 파이썬에서 멀티 캐스팅을 수행하는 방법을 단순히 읽기 위해 전체 프로젝트를 다운로드해야한다면 어떻게 결정적 일 수 있습니까? 두 개 이상의 네트워크 어댑터를 사용 하 여 Windows 2000/XP(사전 SP2)/Server 2003에서 실행 중입니까? 그렇다면 문제는 파이썬이 아닌 윈도우입니다. 원래 코드는 윈도우 2000 (1 네트워크 어댑터)에서 나를 위해 작동하지만 XP Pro (사전 SP2, 3 어댑터 2가 비활성화되어 있지만)에서 실패합니다.

Microsoft는 이 문제에 대한 지원 페이지를 가지고 있습니다. 문제는 수신기에있는 것으로 나타납니다 : 수신기를 실행하는 두 컴퓨터와 함께, Win2K 기계는 두 컴퓨터에서 전송 된 패킷을 보고, XP의 수신기는 Win2K 컴퓨터에서 보낸 메시지를 볼 수 있습니다.

Posted in Uncategorised