2009-12-18 2 views
0

내가소켓이 (리눅스)

(멀티 캐스트 네트워크의 로컬 호스트에서 발생하는 패킷을 필터링하는) 내가 방금 만든 소켓의 주소를 얻기 위해 몇 가지 코드가 필요를 전송하고있는 LAN IP를 얻을 방법이 :

socket.gethostbyname (socket.gethostname())

맥에서 작동하지만 리눅스에서만 로컬 호스트의 IP를 반환 ...의 LAN 주소를

감사를 얻을 수 어쨌든이

--edit--

OS는 LAN IP를 선택하여 소켓 설정에서 가져올 수 있습니다. getsockopt (... IP_MULTICAST_IF)에서 재생할 수 있습니다. ..) 나는 이것을 사용하는 방법을 정확히 모른다 ... ...?

--- 편집 ---

솔트!

send_sock.setsockopt (socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 0)

호스트로 전송 소켓 제거 패킷 에코에이 퍼팅은 OS를 IP 프로그램이 알의 필요성을 제거하는 그들을 전송 보내는 것을 선택했습니다.

예!

+0

어떤 언어입니까? .. –

+0

오 하나님, 미안 해요 - 파이썬 – lol

답변

0

신속한 답변 - socket.getpeername()

(즉, 소켓을 제공하는 소켓 객체가 아닌 모듈) (Python으로 놀아/ipython/대기/... 대화 형 쉘이 많은 도움이 될 것입니다)

.. 또는 신중하게 질문 할 경우 socket.getsockname()

+0

고마워 :) - socket.getsockname 하나의 리눅스에서 작동하지 않습니다 (때문에/etc/hosts 일) peername 연결 및 네트워크 멀티 캐스팅을 사용하여보고 끝점이 필요합니다 그것은 결코 연결되지 않습니다 (단지 다른 기능 내에서 짧은 시간 동안 만 연결됨) – lol