Arhn - архитектура программирования

Как обнаружить программу на С++ на неизвестном компьютере в локальной сети с Android-устройства

У меня есть программа на C++ на компьютере. У меня также есть приложение для Android (версия Android > 4.0). Оба обмениваются данными через сокет TCP. Программа C++ — это серверный сокет, а приложение для Android — клиентский сокет.

Теперь это хорошо работает, если я укажу своему приложению для Android, что такое порт и IP-адрес сервера C++. Я хотел бы иметь возможность обнаружить мою программу на C++ с устройства Android. После некоторых исследований я обнаружил, что могу транслировать по сети сообщение из программы на C++, содержащее IP-адрес и порт компьютера. Затем моя программа для Android будет прослушивать широковещательный адрес, пока не прослушает широковещательное сообщение сервера.

Я не знаю, как это сделать на С++... Это хорошая идея? Если да, то как я могу это сделать? Если нет, то что было бы лучше?

Спасибо!

17.04.2014

  • трансляция хорошая идея, но трансляция не будет включать порт! он отправляется на определенный порт, и ваше устройство Android его слушает 17.04.2014
  • широковещательная рассылка отправляется как обычный TCP-пакет, вы можете легко получить широковещательный адрес: en.wikipedia.org /wiki/Broadcast_address 17.04.2014
  • @PhilippSander: нет, я хотел бы также определить порт ... чтобы избежать конфликта ... Есть ли другой способ сделать это? 17.04.2014
  • насколько я понял tcp и трансляция: нет. простите 17.04.2014
  • почему бы вам просто не использовать 1 порт для вещания и 1 порт для реальных данных? 17.04.2014
  • Порт, который я буду использовать для вещания, тоже может конфликтовать. Так что я не смогу прослушать этот порт на своем клиенте, я не смогу, потому что его уже использует другая программа... верно? 17.04.2014
  • может да....но шанс довольно низкий 17.04.2014
  • Пусть сервер использует UTP для трансляции своего IP-адреса и TCP-порта. 17.04.2014
  • Ваш клиент Android также может попытаться подключиться ко всем IP-адресам в подсети. Если все это dhcp, IP-адрес сервера не будет сильно отличаться от собственного IP-адреса клиента. 17.04.2014
  • @greenapps: ты имеешь в виду UDP, верно? UDP должен отправлять сообщения на порт, я думаю... так что это не решает проблему. 17.04.2014
  • Да УДП. Пожалуйста, прочитайте вопрос № 1204396. 17.04.2014

Ответы:


1

Надежная работа клиент-серверного оборудования может быть довольно сложной задачей; всегда кажется, что есть еще один пограничный случай, который необходимо решить. Вместо того, чтобы переделывать колесо, я рекомендую просто использовать существующую библиотеку, в которой кто-то уже разобрался со всеми перегибами. Я еще не использовал его, но проект с открытым исходным кодом AllJoyn выглядит очень многообещающе.

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

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..