Tcp сервер работает только локально
В настоящее время я работаю над tcp классами qt. Я знаю, что сетевое (или сокетное) программирование имеет собственный огромный мир, и я очень беден с точки зрения знаний в этой области.
Я осознаю тот факт, что, создавая простой клиент и сервер, я не могу сказать, что знаю сетевое программирование, как вы поймете из следующего вопроса.
Во всяком случае, я создаю простые клиентские и серверные программы. И они работают хорошо на местном уровне. Но когда я пытаюсь изменить клиента так, чтобы он пытался подключиться к ip, который я вижу на whatismyip.com, и передать его моему другу, он не может подключиться к серверу, работающему на моей машине. Опять же, если я перестрою клиент так, чтобы он пытался подключиться к ip, который я вижу в cmd> ipconfig, он не сможет подключиться.
Что ты предлагаешь? Я использую мобильное модемное устройство на своем ноутбуке, работающем от USB.
1 ответ
Две основные вещи, которые необходимо проверить / настроить:
A. Убедитесь, что вы прослушиваете все IP-адреса на вашем хост-компьютере.
tcpListener = new TcpListener(IPAddress.Any, SERVER_PORT);
B. И это важно: ваш мобильный модем, скорее всего, выполняет трансляцию NAT, а брандмауэр на нем также, скорее всего, блокирует входящие запросы. Зайдите в настройки вашего модема и настройте его так, чтобы порт перенаправлял любые запросы на соединение с любого используемого порта на внутренний IP-адрес вашего компьютера. Кроме того, убедитесь, что у вас установлен брандмауэр Windows, разрешающий подключения к выбранному вами порту.