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. 錯誤現象:
        [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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM