2012-02-11 2 views
1

파이썬에서 소켓 모듈을 사용하여 기본적인 UDP 클라이언트 - 서버 통신을하고 있습니다. 내가해야 할 일은 아주 간단하다. 클라이언트는 서버에 패킷을 보내고, 서버는 클라이언트의 공용 IP 주소, 포트 및 서버에있는 UDP 패킷의 TTL을 나타내는 숫자로 응답한다. 이것은 내 주요 문제입니다 : recvfrom() 등과 함께 패킷을 수신하고 서버에 도달했을 때의 TTL 값을 읽는 방법이 있습니까?파이썬에서 들어오는 UDP 패킷의 TTL을 얻는 방법

대단히 감사합니다!

마테오 몬티

답변

2

난 당신이() (IP_RECVTTL를) setsockopt를 다음 recvmsg을 사용하려는 생각합니다. 그러나 Python은 표준 라이브러리에 recvmsg을 가지고 있지 않습니다 (http://bugs.python.org/issue6560 참조). 아마도 파이썬에서 가져올 수 있고 원하는 것을 수행하는 작은 C 또는 C++ 공유 라이브러리를 작성해야 할 것입니다. 또는 링크 된 페이지의 패치를 사용해보십시오.

0

이것은 일반적으로 내가 아는 한, 사용자 공간에 노출되지 않습니다. 난 당신이 스택 오버플로 대답에 설명 된대로이 작업을 수행 할 libpcap의 같은 것을 사용해야합니다 생각 :

https://stackoverflow.com/a/2362554/864393

1

파이썬 3.51은 IP_RECVTTL 또는 IP_RECVTOS와 같은 플래그를 지원합니다. 나는 그것을 시험해 보았고 3.x 리눅스 커널에서 나를 위해 일했다.