Node js UDP
Читаю справку по UDP и что-то не нахожу возможности различать клиентов с одной подсети за NAT... оно вообще возможно?
|
Ответ: Node js UDP
пускай клиент шлет в каждом пакете свой айдишник
|
Ответ: Node js UDP
Т.е. генерить уникальный id для клиента при подключении? а потом фильтровать принятые приложением пакеты по этому id?
|
Ответ: Node js UDP
А разве это вообще взможно? Ведь NAT цепляет хэдер на UDP пакеты, не в зависимости от куда он приходит не?
|
Ответ: Node js UDP
В целом тут непонятно о каком уровне сетевого взаимодействия мы тут говорим.
Если соединение установлено то оно будет с вполне конкретным клиентом. С другим клиентом будет своё соединение. Все пакеты что придут по соединению будут от одного клиента. Вся проблема с NAT это невозможность хостить за ним сервер. С точки зрения клиентов никакой разницы нет с тем что они за NAT. Хостить сервер за NAT тоже возможно, но нужна вынесенная во вне часть для поиска клиентов, как баттлнет например. |
Ответ: Node js UDP
UDP не устанавливает соединений.
|
Ответ: Node js UDP
Действительно, ну тогда в каждом пакете нужен идентификатор отправителя.
|
Ответ: Node js UDP
В общем пока не понятно с UDP, пытаюсь искать инфу в интернете. Правда теперь пробую на C#, а не на Node JS.
Единственное что я понял, при приеме датаграммы на сервере я получаю внешний ip и внешний порт (временный наверное). Если отправлять ответ на него, то ответ приходит, если клиент сделал bind на тот же порт, что и сервер... С C# из Unity пока не удалось отправить ничего... пробую... UPD: вроде получилось соединение, буду дальше ковырять |
Ответ: Node js UDP
тут смотрел?
|
Ответ: Node js UDP
Цитата:
UPD: По UDP что-то там почти ничего нету (по крайней мере в оглавлении). |
Ответ: Node js UDP
Цитата:
TCP - это stream based bi-directional connection based communication, где есть постоянное соединение. А UDP - это датаграмма сообщения, всё что происходит это твой комп просто "выкрикивает" сообщения в сетевой провод, что дальше с сообщением происходит - дело интернета и инфраструктур подсетей. Там нету никаких соединений между двумя точками, это просто сообщения летают и направляются маршрутизаторами. Каждая точка и маршрутизатор имеет возможность и меняет header пакета. Также как твой внешний IP в пакете привязан к твоему покету за пределами твоей домашней сети, маршрутизатором от твоего интернет провайдера с которым твой роутер говорит. Там нету соединения никакого. |
Ответ: Node js UDP
Твоё UDP сообщение может даже не дойти до получателя, и ты об этом не узнаешь.
|
Ответ: Node js UDP
Я имел ввиду, что получилось передать пакеты, не придирайтесь к словам. К тому же в C# чтобы начать обмениваться данными с сервером надо седлать socket.Connect вместо socket.Bind. К тому же существует понятие "виртуального соединения". Нашел интересные статьи на тему UDP, жаль всего 3 из них переведены на хабре http://gafferongames.com/networking-...e-programmers/
|
Часовой пояс GMT +4, время: 08:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot