1
を送るいずれかのSO_BROADCASTを設定ソケット、私はソケットを使用してデータを送信するための送信者クラスがあります。パイソン -
import socket as s
class Sender:
def __init__(self):
self.socket = s.socket(s.AF_INET, s.SOCK_DGRAM)
self.socket.setsockopt(s.SOL_SOCKET, s.SO_REUSEADDR, 1)
def send(self, msg, addr):
self.socket.sendto(msg, addr)
をそして、私はデータを送信するためにSender
のインスタンスを作成することができます。
sender = Sender()
sender.send("Message example", (ip, port))
問題送信者が255.255.255.255
にブロードキャストを送信したい場合があるということです。私は放送の通常
:
self.socket.setsockopt(s.SOL_SOCKET, s.SO_BROADCAST, 1)
私の送信者がブロードキャストを送信したり、IPSにメッセージを送信することがありますので、これはここで働いていない理由があります。
SO_BROADCAST
ブロードキャストを送信するときに、別の送信者クラスとインスタンスを作成せずに設定する方法:Sender
、BroadcastSender
?
ありがとうございます!
's.socket(s.AF_INETを使用している場合、 s.SOCK_DGRAM) 'あなたは放送メッセージを送ることができません!低レベルのアクセスが必要ですが、高レベルのクラスを使用します。 'RAW'ソケットだけがこれを送ることができ、他の接続(' TCP'/'UDP')はターゲット(IP/PORT)になります。私のオファーはコピー/ペーストコードを使用しません。 ( 'RAW'は' root/administrator'権限が必要です)。 – dsgdfg
私はブロードキャストメッセージを言うとき、ブロードキャストポートにメッセージを送信することを意味します。つまり、他の人がそのIPからのメッセージをリッスンする「255.255.255.255」です。私はちょうど解決策をとらえた。 –