我有一个发件人类,用于使用套接字发送数据:
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
?
提前致谢!
答案 0 :(得分:0)
要允许套接字向255.255.255.255
(广播)发送消息,您可以执行以下操作...
内部Sender
类:
def send(self, msg, addr):
if msg == "255.255.255.255": self.socket.setsockopt(s.SOL_SOCKET, s.SO_BROADCAST, 1)
self.socket.sendto(msg, addr)
if msg == "255.255.255.255": self.socket.setsockopt(s.SOL_SOCKET, s.SO_BROADCAST, 0)