Простое TCP соединение с компьютером за роутером - PullRequest
7 голосов
/ 05 марта 2012

Я пишу пульт C # для моего медиаплеера.Он работает на моем телефоне Android.

У меня есть клиентское приложение, которое прослушивает TCP-соединения на моем компьютере, которое после установления соединения обрабатывает команды (увеличение громкости, уменьшение громкости, ...).Я протестировал эту часть, используя telnet 127.0.0.1 на своем компьютере, и она отлично работает.

С подключением с телефона все сложнее, поскольку он не в той же сети (у меня нетWi-Fi, только проводные соединения), поэтому я не уверен, что делать дальше.В основном я хочу подключиться к компьютеру, который находится за маршрутизатором.

Стоит ли мне размещать TCP-сервер на моем телефоне и подключать ли к нему ПК?Возьмите IRC в качестве примера: хотя я за маршрутизатором, я могу подключаться к серверам снаружи, без переадресации портов.Или, если хостинг сервера на моем компьютере в порядке, как мне к нему подключиться?

Я пока не все понимаю, так что не стесняйтесь исправлять меня, если я что-то не так.

Ответы [ 2 ]

6 голосов
/ 16 марта 2012

С подключением с моего телефона дела обстоят сложнее, поскольку он не подключен к той же сети (у меня нет Wi-Fi, только проводные подключения), поэтому я не уверен, что делать дальше.По сути, я хочу подключиться к компьютеру, который находится за маршрутизатором.

То, чего вы хотите достичь, возможно, но вам нужно узнать о прохождении NAT и пробивании дырок.

Чаще всегоустройства за NAT / маршрутизатором имеют частный IP-адрес, действительный только в локальной сети.Удаленные устройства не могут угадать это.Этот частный адрес преобразуется NAT в общедоступный IP-адрес, когда устройство хочет установить связь с глобальной сетью.

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

6 голосов
/ 05 марта 2012

Было бы более логично сохранить ПК, на котором размещен сервер, и настроить маршрутизатор для переадресации соединений на ваш ПК.У вас есть два варианта:

  • Установить DMZ : все входящие соединения на маршрутизаторе будут перенаправлены только на один ПК.Это проще всего, когда у вас есть только один ПК в сети, который должен принимать соединения.
  • Настройка переадресация порта : вы можете настроить маршрутизатор на переадресацию входящих соединенийпорт X к IP Y на порту Z. Таким образом, несколько компьютеров могут перечислять соединения (используя разные порты на маршрутизаторе).Это также немного более безопасно.

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

...