Python UDP broadcast PermissionError: [Errno 13] Permission denied

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python UDP broadcast PermissionError: [Errno 13] Permission denied相关的知识,希望对你有一定的参考价值。

/**********************************************************************
 * Python UDP broadcast PermissionError: [Errno 13] Permission denied
 * 说明:
 *     使用Python3做UDP广播,遇到这个权限问题,当时就一阵惊讶,第一看
 * 到这种无权限的问题。
 *
 *                                  2016-12-10 深圳 南山平山村 曾剑锋
 *********************************************************************/

一、参考文档:
    Python socket.error: [Errno 13] Permission denied
        http://stackoverflow.com/questions/11457676/python-socket-error-errno-13-permission-denied

二、错误:
    1. 错误现象:
        [[email protected] ~]#  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
        [[email protected] ~]#  
    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()

 

以上是关于Python UDP broadcast PermissionError: [Errno 13] Permission denied的主要内容,如果未能解决你的问题,请参考以下文章

Python网络编程—UDP套接字广播

python网络编程

python python中的perm算法,带有一个slot对象。

9 udp广播

发送和接收UDP数据包

在 Python 中接收广播数据包