Как связать клиента и сервер? - PullRequest
0 голосов
/ 11 декабря 2010

Даже если UDP не использует соединение, я хотел бы установить какое-то соединение между клиентом и сервером.Дело в том, что, как только сервер получил что-то от клиента, единственное, что я могу сделать, отправив свой ответ, - это использовать IP-адрес и порт от клиента.

И хорошо ... это будет почтиКАЖДЫЙ СЛУЧАЙ, а не IP-адрес клиента, потому что у клиента нет IP-адреса в Интернете: только его маршрутизатор.Я хотел бы знать, как отправить данные обратно клиенту, даже если он находится за маршрутизатором.

Я начинаю верить, что это невозможно ... но это ДОЛЖНО БЫТЬ возможно: не говорите мне видеоигрыиспользуйте UDP только для отправки данных с клиента на сервер!

Ответы [ 3 ]

2 голосов
/ 11 декабря 2010

Параметры для UDP за брандмауэрами:

  1. Явные правила для брандмауэра / NAT, пересылающих пакеты UDP на конкретный компьютер.
  2. UPnP для автоматической настройки правил (со стороны клиента)
  3. Автоматический обратный путь для UDP - NAT запоминает порты и IP-адреса и создает правило возврата для пакетов UDP.
0 голосов
/ 11 декабря 2010

Ваш маршрутизатор заметит, что он переписал исходящий пакет данных, чтобы он выглядел так, как будто он поступил из порта на маршрутизаторе, и запомните это. Если он затем получит адрес пакета UDP на тот же порт, он скажет: «О, я знаю, куда это отправить!» и перенаправьте его на порт внутри сети, откуда исходные данные.

обычно маршрутизатор запоминает маршруты на определенное время, а затем забывает их, если ничего не видит на этом порту.

0 голосов
/ 11 декабря 2010

Просто отправьте обратно клиенту через тот же сокет, NAT автоматически разрешит это и передаст его фактическому блоку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...