Python UDP broadcast PermissionError: [Errno 13] Permission denied

简介: /********************************************************************** * Python UDP broadcast PermissionError: [Errno 13] Permission denied * 说明: * 使用Python3做UDP广播,遇到这个权限问题,当时就一阵惊讶,第一看 * 到这种无权限的问题。
/**********************************************************************
 * 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. 错误现象:
        [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()

 

目录
相关文章
|
28天前
|
存储 Python
Python网络编程基础(Socket编程) UDP 发送和接收数据
【4月更文挑战第10天】对于UDP客户端而言,发送数据是一个相对简单的过程。首先,你需要构建一个要发送的数据报,这通常是一个字节串(bytes)。然后,你可以调用socket对象的`sendto`方法,将数据报发送到指定的服务器地址和端口。
|
29天前
|
存储 Python
Python网络编程基础(Socket编程)UDP客户端编程
【4月更文挑战第9天】在UDP通信中,客户端负责发送数据到服务器,并接收来自服务器的响应。与服务器不同,客户端通常不需要绑定到特定的地址和端口,因为它可以临时使用任何可用的端口来发送数据。下面,我们将详细讲解UDP客户端编程的基本步骤。
|
1月前
|
网络协议 Python
Python网络编程基础(Socket编程)创建UDP socket对象
【4月更文挑战第8天】在Python中创建UDP服务器涉及使用`socket`模块创建socket对象,如`udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)`,然后绑定到特定IP地址和端口,如`udp_socket.bind((&#39;localhost&#39;, 12345))`。服务器通过`recvfrom`在无限循环中监听和接收数据报。这只是基础,实际应用还需处理接收、解析、响应及错误处理等。接下来可学习如何利用socket对象进行数据交互以构建完整服务器。
|
1月前
|
网络协议 网络性能优化 开发者
Python网络编程基础(Socket编程)UDP Socket编程
【4月更文挑战第8天】Python网络编程中,UDP与TCP协议各有特点。TCP提供可靠连接,确保数据顺序与完整性,适合文件传输等;UDP则无连接,速度快,常用于实时音视频,牺牲了数据可靠性。Python的socket库支持两者,开发者可根据需求选择。
|
3月前
|
网络协议 Python
在Python中进行UDP(User Datagram Protocol)网络编程
在Python中进行UDP(User Datagram Protocol)网络编程
30 3
|
6月前
|
Python
150 python网络编程 - UDP广播
150 python网络编程 - UDP广播
26 0
|
6月前
|
Python
147 python网络编程 - UDP案例
147 python网络编程 - UDP案例
28 0
|
6月前
|
Python
145 python网络编程 - UDP绑定信息
145 python网络编程 - UDP绑定信息
33 0
|
6月前
|
Python
143 python网络编程 - UDP发送、接收数据
143 python网络编程 - UDP发送、接收数据
42 0
|
3月前
|
安全 网络安全 API
python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error
python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error
78 1
python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error