@rail01y

Как правильно реализовать поиск устройства в сети?

Доброго времени суток.
В виду того, что я плохо знаком с администрированием в целом и сетевой структурой в частности, то стараюсь решить следующий вопрос: как реализовать поиск устройства в сети?

Конкретнее ситуация следующее: делаю небольшое приложение на react и хотел бы упростить поиск устройств в рамках одной подсети. Сам процесс я представляю себе следующим образом, сервер шлет на broadcast какое-то сообщение (типа hello), когда клиент включает приложение, он начинает слушать и отлавливать udp пакеты,  тем самым находит сервер, который вещает и дальше в схему вступает нормальная работа, но у меня не получается это сделать, код привожу ниже:

демо сервер который рассылает:
from socket import *
import time


cs = socket(AF_INET, SOCK_DGRAM)
while(True):
	cs.sendto(b'This is a test', ('0.0.0.0', 12345))
	print('test')
	time.sleep(1)


приложение, которое слушает:
import DGRAM from 'dgram';
let udpSocket = DGRAM.createSocket('udp4');
udpSocket.bind(12345, '0.0.0.0');
udpSocket.on('message', (msg, info) => {
            console.log(msg, info)
});


собственно сервер сообщение рассылает (если начинаю мониторить сообщение локально nc -u -l 12345 то их вижу), но приложение их не отлавливает, до тех пор, пока не укажу физический адрес куда отправлять. Кто как решал этот вопрос?
  • Вопрос задан
  • 437 просмотров
Решения вопроса 1
@rail01y Автор вопроса
Собственно, задачу решил, в итоге надо было указать опции у сервера при отправке (SO_BROADCAST https://www.ibm.com/support/knowledgecenter/en/SSL... - описание тут)
сам код сервера:
from socket import *
import time

cs = socket(AF_INET, SOCK_DGRAM)
cs.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
cs.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)

while(True):
	cs.sendto("TestText".encode(), ('255.255.255.255', 12345))
	print('test')
	time.sleep(1)


адрес в приложение так же стал смотреть на 255.255.255.255
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы