Tcp сервер работает только локально

В настоящее время я работаю над tcp классами qt. Я знаю, что сетевое (или сокетное) программирование имеет собственный огромный мир, и я очень беден с точки зрения знаний в этой области.

Я осознаю тот факт, что, создавая простой клиент и сервер, я не могу сказать, что знаю сетевое программирование, как вы поймете из следующего вопроса.

Во всяком случае, я создаю простые клиентские и серверные программы. И они работают хорошо на местном уровне. Но когда я пытаюсь изменить клиента так, чтобы он пытался подключиться к ip, который я вижу на whatismyip.com, и передать его моему другу, он не может подключиться к серверу, работающему на моей машине. Опять же, если я перестрою клиент так, чтобы он пытался подключиться к ip, который я вижу в cmd> ipconfig, он не сможет подключиться.

Что ты предлагаешь? Я использую мобильное модемное устройство на своем ноутбуке, работающем от USB.

1 ответ

Решение

Две основные вещи, которые необходимо проверить / настроить:

A. Убедитесь, что вы прослушиваете все IP-адреса на вашем хост-компьютере.

tcpListener = new TcpListener(IPAddress.Any, SERVER_PORT);

B. И это важно: ваш мобильный модем, скорее всего, выполняет трансляцию NAT, а брандмауэр на нем также, скорее всего, блокирует входящие запросы. Зайдите в настройки вашего модема и настройте его так, чтобы порт перенаправлял любые запросы на соединение с любого используемого порта на внутренний IP-адрес вашего компьютера. Кроме того, убедитесь, что у вас установлен брандмауэр Windows, разрешающий подключения к выбранному вами порту.

Другие вопросы по тегам