2016-08-04 4 views
0

У меня есть мастер-сервер (Windows 10), который я использую для управления несколькими палитрой PI с использованием TCP в узле js.Отправьте имя хоста клиента TCP на узел в узле JS

Мне интересно, какой был бы лучший способ отправить имя хоста каждого pi (pi-001.local, pi002.local, pi003.local и т. Д.) На сервер.

работает socket.remoteAddress на сервере возвращает IP-клиента, но то, что мне нужно Hostname

Очевидно, каждый из пи может решить свое собственное имя хоста с помощью os.hostname() метода , но мне нужно следить и знать, что такое имя хоста каждый объект net.Socket связан с сервером .

Есть ли лучший способ, чем просто отправить его через socket.write(os.hostname())?

спасибо!

ответ

1

До тех пор, пока DNS-сервер, используемый TCP-сервером, знает имена хостов устройств PI, вы можете просто использовать TCP-сервер для обратного поиска socket.remoteAddress для каждого соединения. Вы можете сделать этот обратный поиск в узле с dns.reverse().

+0

Я попробую спасибо! – yurikleb

+0

Значит, мне нужно настроить DNS-сервер на моей мастер-машине? Я предполагаю, что мой маршрутизатор в настоящий момент, похоже, не знает о именах pi-хостов, поэтому 'dns.reverse()' возвращает 'undefined' в данный момент. Я получаю IP-адрес, когда запускаю 'dns.lookup ('pi000001.local, ...)' извините, я немного не знаком с работой сетей. – yurikleb

0

Это уже сделано в протоколе SMTP, который является хорошей моделью для использования в TCP-согласовании. Используя этот тип подхода, то первое, что ваш Пи будет делать, когда они подключаются к серверу написать

HELO pi00001.local

... что путь ваш сервер всегда ожидает, что информация до фронта от Pi с каждым подключиться или повторно подключиться.

+0

Эй, спасибо! Я думаю, что использование SMTP может быть чересчур избыточным, поскольку я действительно хотел бы придерживаться некоторых действительно основных коммуникаций. – yurikleb

+0

Я имею в виду только часть HELO, не реализующую весь протокол SMTP;) – Brandon

+0

закончил отправку простой строки «Hello» с именем хоста из клиента при подключении. благодаря! – yurikleb