2012-07-12 13 views
16

लिनक्स और अजगर का उपयोग करना, मैं प्रसारण के साथ कुछ डेटा भेजना चाहते हैं: इस त्रुटिअजगर socket.error: [errno 13] अनुमति अस्वीकृत

d = b'109u433279423423423'  

import socket 

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

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

मैं जड़ के तहत इस स्क्रिप्ट का शुभारंभ और मिलती है:

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

क्या गलत है?

उत्तर

27

आप एक प्रसारण पते पर भेजने की कोशिश कर रहे हैं।

EACCES (यूडीपी सॉकेट के लिए) का प्रयास किया गया था एक नेटवर्क/प्रसारण का पता करने के लिए भेजने के लिए जैसे कि यह एक यूनिकास्ट पता था: यह अनुमति नहीं है, sendto (2) के लिए मैनपेज देखते हैं।

SO_BROADCAST विकल्प सेट करें, यदि आप वास्तव में एक प्रसारण पता करने के लिए भेजने के लिए मतलब है:

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

धन्यवाद। अजीब बात यह है कि यह विंडोज – atomAltera

+6

पर ठीक से काम करता है यह विंडोज पर हमेशा ऐसा होता है: अजीब – fork0

+0

यूनिक्स चश्मा: sendto - सॉकेट पर एक संदेश भेजें: http://pubs.opengroup.org/onlinepubs/009695399/functions/sendto.html – fork0

संबंधित मुद्दे