Как получить IP-адрес локальной сети, который посылает сокет (linux) - PullRequest
0 голосов
/ 18 декабря 2009

Мне нужен код, чтобы получить адрес только что созданного сокета (чтобы отфильтровать пакеты, отправленные с локального хоста в многоадресной сети)

это:

socket.gethostbyname (socket.gethostname ())

работает на Mac, но возвращает только локальный IP-адрес в Linux ... Есть ли в любом случае, чтобы получить адрес локальной сети

спасибо

- изменить -

возможно ли получить его из настроек сокета, например, ОС должна выбрать IP-адрес локальной сети для отправки на ... могу ли я играть на getsockopt (... IP_MULTICAST_IF ...) Я не знаю точно, как чтобы использовать это хотя ...?

--- редактировать ---

РЕШИТЬ!

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

размещение этого на сокете отправки устраняет эхо-пакеты пакетов на хост, отправляющий их, что устраняет необходимость для программы знать, какой IP-адрес выбрана ОС для отправки.

яй!

Ответы [ 2 ]

1 голос
/ 18 декабря 2009
0 голосов
/ 18 декабря 2009

быстрый ответ - socket.getpeername() (при условии, что сокет является объектом сокета, а не модулем)

(играть в python / ipython / idle / ... очень полезна интерактивная оболочка)

.. или если я внимательно прочитал вопрос, может быть socket.getsockname():)

...