Python socket.error: [Errno 13] В доступе отказано

Используя Linux и Python, я хочу отправить некоторые данные с трансляцией:

d = b'109u433279423423423'    

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.sendto(d, 0, ('192.168.0.255', 9))

Я запускаю этот скрипт под root и получаю эту ошибку:

s.sendto(d, 0, ('192.168.0.255', 9)) socket.error: [Errno 13]
Permission denied

Что случилось?

Ответы на вопрос(1)

Решение Вопроса

см. Man-страницу для sendto (2):

EACCES (Для сокетов UDP) Была предпринята попытка отправить на сетевой / широковещательный адрес, как если бы это был адрес одноадресной рассылки.

Установите опцию SO_BROADCAST, если вы действительно хотите отправить на широковещательный адрес:

s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
 12 июл. 2012 г., 22:11
Это всегда так на Windows: странно
 12 июл. 2012 г., 22:12
Спецификации UNIX: sendto - отправить сообщение в сокет:pubs.opengroup.org/onlinepubs/009695399/functions/sendto.html
 atomAltera12 июл. 2012 г., 22:10
Благодарю. Странно, что это работает правильно на Windows

Ваш ответ на вопрос