На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Profi, juice
  
> UDP server, не в локальной сети
Привет всем.
Я хочу реализовать upd сервер для игры. Сервер имеет белый ip и в некий порт, можно поставить какой захоыется. Нагуглил примеры, и все они отлично работают в локальной сети. А когда сервер находится где то на "другой стороне в интернете" :) то послать обратно пакет от сервера не получается, потому что в на сервере в принятом пакете endpoint выглядит как некий ip и некий произвольный порт, открыв которые и отправляя ответ он никуда не уходит. И вообще не понятно каким образом сервер сможет "отгадать" куда отсылать пакет, когда клиент находится за N кол-вом маршрутизаторов и т.п. Я в этом не специалист, поэтому прошу помощи подсказать, как реализуется данная задача?

Добавлено
... и что (ip, порт) собственно, должен слушать клиент, ожидая ответа от сервера?
Обратно ничего и не надо слать, когда акцептишь входящее соединение на сервере, создаётся сокет соединения с клиентом, вот туда и надо срать.

Добавлено
Цитата Юра Железобетон @
... и что (ip, порт) собственно, должен слушать клиент, ожидая ответа от сервера?

Не должен, ибо слушать это есть бинд и листен, то бишь сервер, ты хочешь создать сервер на клиенте?
Цитата Юра Железобетон @
Привет всем.
Я хочу реализовать upd сервер для игры. Сервер имеет белый ip и в некий порт, можно поставить какой захоыется. Нагуглил примеры, и все они отлично работают в локальной сети. А когда сервер находится где то на "другой стороне в интернете" :) то послать обратно пакет от сервера не получается,
....
Добавлено
... и что (ip, порт) собственно, должен слушать клиент, ожидая ответа от сервера?

Всё получится, и я такое делал.
---
Когда UDP-сервер получит пакет от клиента посредством
"recvfrom", то может быть получена структура "sockaddr_in".
В полях этой структуры имеются IP и порт отправителя.
Туда можно отправить ответный пакет.
---
Клиент, который желает получить ответ после посылки,
должен читать статус сокета select-ом (с тайм-аутом, очевидно).
И когда статус на чтение скажет "готово" - читать
данные посредством "recvfrom".

Как-то так, может что и упустил, давно делал.
---
Только что попробовал удалённй комп у себя на работе - отвечает,
ничего не поломалось.
Сообщение отредактировано: ЫукпШ -
Подпись была выключена в связи с наложенным заземлением.
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0889 ]   [ 20 queries used ]   [ Generated: 3.12.20, 07:32 GMT ]