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
なにが問題ですか?
ブロードキャストアドレスに送信しようとしています。許可されていません。sendto(2)のマンページを参照してください。
[〜#〜] eacces [〜#〜](UDPソケットの場合)ユニキャストアドレスであるかのようにネットワーク/ブロードキャストアドレスに送信しようとしました。
実際にブロードキャストアドレスに送信する場合は、SO_BROADCASTオプションを設定します。
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)