2009-09-27 1 views
0

모두 나는 파이어 폭스 확장을 통해 피어 투 피어 (UDP) 통신을 설정하려고합니다. 커맨드 라인에서 작동하는 파이썬 프로그램이 있습니다. 나는 그것을 사용하여 xpcom 구성 요소를 만들었습니다. 하지만 놀랍게도 나는 명령 행의 python 프로그램을 통해서만 메시지를받을 수 있었다. 수신기으로>파이어 폭스 XPCOM 컴포넌트 - - 보낸 사람으로Wireshark ------- 출처 : timbuktu-srv2?

파이썬 명령 줄을 작동하지 않았다

파이어 폭스 XPCOM 컴포넌트 보낸 사람 같이

우리는 (모든 로컬 호스트에서 작업) 다음과 같은 시도 근무

파이어 폭스 XPCOM 완 -은 - 수신기로서>파이어 폭스 XPCOM 컴포넌트 onent 보낸 사람으로은 ->파이썬 명령 줄은 수신기로 - 작동하지 않았다

보낸 사람으로 파이썬 커맨드 ->파이썬 명령 줄로 수신기 - 우리가 패킷을 관찰 할 때

을 근무

파이어 폭스 XPCOM 파이썬 명령 줄 및 파이어 폭스 XPCOM파이어 폭스 XPCOM에 (어떤을 worke의 않았다 - 와이어 샤크를 사용하여 우리는 약간의 차이를 가지고

윈속 (C++)

XPCOM 컴포넌트에 의해 생성 된 패킷

이러한 유형 (소스 포트가 아닌 숫자로 표시)는 다음과 같이 d) 패킷 레코드가

C#

...UDP Source port: timbuktu-srv2 Destination port: 30000 

파이썬 명령 줄에서 파이썬 명령 줄파이썬 명령 줄에서 X 내가 네트워크에 대해 잘 모르는

... UDP Source port: 30000 Destination port: 30000 

을 따르지만 레코드가 ..Source port: timbuktu-srv2..가 목적지에 도달하는 데 실패 표시로 PCOM은 (근무 않았다) 패킷 기록을 가지고있다.

내가 파이썬, C++ (윈속), C#을 사용하는 P2P 통신을 시도하고있다하지만 내가 관찰 할 수있는 파이썬 유일한 차이점을 성공시킬 수

파이썬과 특정 레코드의 같은 유형이 ..

일부 네트워킹 전문가 플래시 빛이 수 그걸로?

답변

0

표시되는 timbuktu-srv2 Wireshark가 알려진 서비스 목록과 비교하여 실제 포트 번호를 조회 한 결과입니다. 당신이 IANA assigned port numbers list을 선택하면, 당신이 항목을 볼 수 있습니다 :

timbuktu-srv2 1418/udp Timbuktu Service 2 Port 

을 ... 그건 당신의 응용 프로그램이 전송되는 UDP 패킷의 소스 포트로 1418을 사용하는 것을 의미하므로.로컬 서비스 데이터베이스에 해당 포트 번호에 대한 항목이 없으므로 30000은 텍스트 서비스 이름으로 변환되지 않습니다.

이것은 자체적으로 문제를 설명하지 않습니다. 실제로 서버 측은 원하는 모든 소스 포트를 사용하여 클라이언트를 받아 들여야합니다. 그러나이 경우 수신자 쪽에서는 원본 포트가 30000 인 패킷 만 받아들이는 것 같습니다.이를 달성하려면 패킷을 보내기 전에 소켓을 로컬 주소 INADDR_ANY 및 포트 30000에 바인딩해야합니다.