я пытаюсь работать с сокетами и у меня такая проблема
В примере кода:
setsockopt(socket.SOL_SOCKET,IN.SO_BINDTODEVICE,self.listen_address+'\0')
У меня ошибка
AttributeError: 'module' object has no attribute 'SO_BINDTODEVICE'
На машине с Linux этот атрибут в порядке, но во FreeBSD нет никаких атрибутов SO_ * в модуле IN
. Какой порт я должен установить, чтобы решить эту проблему на компьютере с FreeBDS?
Проверенные версии Python для Linux:
2.5.4 и 2.6.4;
на FreeBSD:
2.5.5
Я не могу найти ничего об этом модуле в своей книге, и ключевое слово googling IN
выглядит как бесшовное ...
Обновление:
Я могу привязать только к адресу, а не к устройству.
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> s.bind(("eth0",3040))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in bind
socket.gaierror: [Errno -2] Name or service not known
>>> s.bind(("192.168.33.152",3040))
>>> s.close()
обновление 2:
... но я работаю с широковещательными пакетами. Я пытаюсь написать демон, который действует как сервер DHCP.
Если я свяжусь с адресом, поймал бы я широковещательные пакеты? А если я включу беспорядочный режим?