Я пытаюсь использовать широковещательные пакеты для адреса подсети, я успешно попытался сделать это с помощью опции широковещания сокета, но недавно я начал изучать ZeroMQ, поэтому я хотел бы использовать его для широковещательной передачи пакетов в подсеть.Я использовал zmq.PUB
, zmq.SUB
, но на стороне подписчика пакеты не доставлены, потому что я использую адрес подсети.Если я использую IP-адрес устройства, он работает, но это не то, что я хочу.
Есть ли возможность вещания с использованием ZMQ?
Вот код, который я пытался сделать такfar:
Издатель:
import zmq
import time
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://192.X.X.255:9999") # Note.
while True:
socket.send_string('hello')
time.sleep(1)
Подписчик:
context = zmq.Context()
sub=context.socket(zmq.SUB) # Note.
sub.setsockopt(zmq.SUBSCRIBE, b"") # Note.
sub.connect('tcp://192.x.x.255:9999') -> publishing only to subnet
while True:
print(sub.recv())
Мы можем осуществлять вещание пакетов, используя обычный сокет, например, используя:
sock.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
Но я хочу заменить это так, как я делаю это с ZMQ.Действительно ли у ZMQ обнаружение широковещательной передачи по-другому, или мы должны использовать тот же код, что и для обычного широковещания?