Получить IP-адрес Websocket по известному порту - PullRequest
0 голосов
/ 12 марта 2020

Я построил веб-сокет в C ++ (используя boost :: beast). Он будет обслуживать веб-сайт (клиента) со строкой JSON по запросу. При разработке своей установки я допустил катастрофическую ошибку: я забыл, что клиентский веб-браузер (запущенный на отдельном устройстве от сервера) не будет знать IP-адрес сервера. Он будет знать порт, который прослушивает сервер.

Я должен указать: оба (сервер и клиент) работают в локальной сети.

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

  1. Отправить какое-то сообщение в широковещательном режиме «Очень конкретная c строка В сеть. Мой сервер будет знать, что его искали, и ответит своим IP, чтобы можно было установить соединение. Этот пост , кажется, указывает, что этот подход не будет возможен.

  2. Пусть пользователь введет (известный) IP-адрес устройства, на котором запущен сервер. Я действительно хотел бы избежать этого крайнего решения.

К сожалению, я не могу запустить node.js на устройстве, на котором размещен сервер веб-сокетов.

Ответы [ 2 ]

1 голос
/ 13 марта 2020

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

Я мог бы порекомендовать проверить этот пост , чтобы узнать IP-адрес в вашей локальной сети. Если вы хотя бы знаете имя сервера, которое может быть полезным.

0 голосов
/ 16 марта 2020

@E.Soria Спасибо за ваш ответ! Я не был достаточно точен.

Проблема заключалась в том, что сервер работает на устройстве, которое будет частью сети нашего клиента. Клиент определит IP-адрес для устройства, что означает, что мне нужен какой-то способ получения адреса сервера.

Но я мог бы найти другое решение (как вы уже могли бы сказать, что я очень плохо знаком с сетью, так что это может быть неправильно): я буду размещать веб-сайт на том же устройстве, на котором размещен сервер и который предоставляет данные. Тогда я могу просто установить sh соединение через веб-сокет через javascript следующим образом: let socket = new WebSocket(ws://127.0.0.1:8080); и сделать так, чтобы веб-сайт считывал данные с сервера. Это кажется очень простым, и я немного смущен, что я не думал об этом раньше. Я просто не очень понял, как работает inte rnet :) Пока пользователь, который хочет видеть веб-сайт, знает, где он размещен, он / она может просто подключиться к веб-сайту и увидит все, что я добавлю туда ,

My setup now

...