Winsock 2.0 не будет подключаться к общедоступному IP-адресу - PullRequest
0 голосов
/ 25 августа 2011

Итак, я пытаюсь создать простую текстовую IM-программу, чтобы попасть в удивительный мир сетевых технологий.Я написал 2 программы, использующие Winsock 2.0 с C ++: сервер и клиент.Я указал соединение UDP через создание сокета:

SOCKET Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

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

1 Ответ

1 голос
/ 25 августа 2011

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

  public IP            internal router
   address +--------+  IP address  +---------+
      v    |        |  v           |         |
 ----------+ router +--------------+ desktop +
           |        |           ^  |         |
           +--------+   internal   +---------+
                      desktop IP address

http://portforward.com/

...