web-dev-qa-db-ja.com

Python socket.error:[Errno13]アクセスが拒否されました

LinuxとPythonを使用して、ブロードキャストでデータを送信したいと思います。

d = b'109u433279423423423'    

import socket

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

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

このスクリプトをrootで起動すると、次のエラーが発生します。

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

なにが問題ですか?

16
atomAltera

ブロードキャストアドレスに送信しようとしています。許可されていません。sendto(2)のマンページを参照してください。

[〜#〜] eacces [〜#〜](UDPソケットの場合)ユニキャストアドレスであるかのようにネットワーク/ブロードキャストアドレスに送信しようとしました。

実際にブロードキャストアドレスに送信する場合は、SO_BROADCASTオプションを設定します。

s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
31
fork0