/**********************************************************************
* Python UDP broadcast PermissionError: [Errno 13] Permission denied
* 说明:
* 使用Python3做UDP广播,遇到这个权限问题,当时就一阵惊讶,第一看
* 到这种无权限的问题。
*
* 2016-12-10 深圳 南山平山村 曾剑锋
*********************************************************************/
一、参考文档:
Python socket.error: [Errno 13] Permission denied
http://*.com/questions/11457676/python-socket-error-errno-13-permission-denied
二、错误:
1. 错误现象:
[zengjf@root ~]# python main.py
fdsaf
Traceback (most recent call last):
File "main.py", line 11, in <module>
s.sendto('zengjf'.encode('utf-8'), address)
PermissionError: [Errno 13] Permission denied
[zengjf@root ~]#
2. 错误原因:
Set the SO_BROADCAST option, if you actually mean to send to a broadcast address:
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
3. 测试代码:
import socket
address = ('255.255.255.255', 50000)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while True:
msg = input()
if not msg:
break
s.sendto('zengjf'.encode('utf-8'), address)
s.close()