2012-07-12 33 views
16

El uso de Linux y Python, quiero enviar algunos datos con emisión:Python socket.error: [Errno 13] Permiso denegado

d = b'109u433279423423423'  

import socket 

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

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

lanzo esta secuencia de comandos en la raíz y obtiene este error:

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

¿Qué pasa?

Respuesta

27

Está tratando de enviar contenido a una dirección de difusión. No está permitido, ver página del manual de sendto (2):

EACCES (Para sockets UDP) se hizo un intento de enviar a una red/dirección de difusión como si fuera una dirección unicast.

Establecer la opción SO_BROADCAST, si realmente se quiere decir para enviar a una dirección de difusión:

s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) 
+1

Gracias. Es extraño que esto funcione correctamente en Windows – atomAltera

+6

Siempre es así en Windows: extraño – fork0

+0

especificaciones de UNIX: sendto - envíe un mensaje a un socket: http://pubs.opengroup.org/onlinepubs/009695399/functions/sendto.html – fork0

Cuestiones relacionadas