Задать вопрос
@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 то их вижу), но приложение их не отлавливает, до тех пор, пока не укажу физический адрес куда отправлять. Кто как решал этот вопрос?
  • Вопрос задан
  • 446 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽