forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   Node js UDP (http://forum.boolean.name/showthread.php?t=19066)

pax 02.04.2014 13:54

Node js UDP
 
Читаю справку по UDP и что-то не нахожу возможности различать клиентов с одной подсети за NAT... оно вообще возможно?

SBJoker 02.04.2014 14:27

Ответ: Node js UDP
 
пускай клиент шлет в каждом пакете свой айдишник

pax 02.04.2014 14:56

Ответ: Node js UDP
 
Т.е. генерить уникальный id для клиента при подключении? а потом фильтровать принятые приложением пакеты по этому id?

moka 02.04.2014 18:19

Ответ: Node js UDP
 
А разве это вообще взможно? Ведь NAT цепляет хэдер на UDP пакеты, не в зависимости от куда он приходит не?

SBJoker 02.04.2014 19:01

Ответ: Node js UDP
 
В целом тут непонятно о каком уровне сетевого взаимодействия мы тут говорим.
Если соединение установлено то оно будет с вполне конкретным клиентом. С другим клиентом будет своё соединение. Все пакеты что придут по соединению будут от одного клиента.

Вся проблема с NAT это невозможность хостить за ним сервер.
С точки зрения клиентов никакой разницы нет с тем что они за NAT.
Хостить сервер за NAT тоже возможно, но нужна вынесенная во вне часть для поиска клиентов, как баттлнет например.

moka 02.04.2014 19:20

Ответ: Node js UDP
 
UDP не устанавливает соединений.

SBJoker 02.04.2014 19:52

Ответ: Node js UDP
 
Действительно, ну тогда в каждом пакете нужен идентификатор отправителя.

pax 03.04.2014 11:55

Ответ: Node js UDP
 
В общем пока не понятно с UDP, пытаюсь искать инфу в интернете. Правда теперь пробую на C#, а не на Node JS.
Единственное что я понял, при приеме датаграммы на сервере я получаю внешний ip и внешний порт (временный наверное). Если отправлять ответ на него, то ответ приходит, если клиент сделал bind на тот же порт, что и сервер...

С C# из Unity пока не удалось отправить ничего... пробую...

UPD: вроде получилось соединение, буду дальше ковырять

impersonalis 03.04.2014 13:04

Ответ: Node js UDP
 
тут смотрел?

pax 03.04.2014 13:31

Ответ: Node js UDP
 
Цитата:

Сообщение от impersonalis (Сообщение 278236)
тут смотрел?

Нет, спасибо

UPD: По UDP что-то там почти ничего нету (по крайней мере в оглавлении).

moka 03.04.2014 15:27

Ответ: Node js UDP
 
Цитата:

Сообщение от pax (Сообщение 278232)
UPD: вроде получилось соединение, буду дальше ковырять

Соединения нету. PAX не путай концепции двух очень различных протоколов, это тебя сбивает.

TCP - это stream based bi-directional connection based communication, где есть постоянное соединение.
А UDP - это датаграмма сообщения, всё что происходит это твой комп просто "выкрикивает" сообщения в сетевой провод, что дальше с сообщением происходит - дело интернета и инфраструктур подсетей. Там нету никаких соединений между двумя точками, это просто сообщения летают и направляются маршрутизаторами. Каждая точка и маршрутизатор имеет возможность и меняет header пакета. Также как твой внешний IP в пакете привязан к твоему покету за пределами твоей домашней сети, маршрутизатором от твоего интернет провайдера с которым твой роутер говорит.

Там нету соединения никакого.

Phantom 03.04.2014 18:51

Ответ: Node js UDP
 
Твоё UDP сообщение может даже не дойти до получателя, и ты об этом не узнаешь.

pax 03.04.2014 22:30

Ответ: Node js UDP
 
Я имел ввиду, что получилось передать пакеты, не придирайтесь к словам. К тому же в C# чтобы начать обмениваться данными с сервером надо седлать socket.Connect вместо socket.Bind. К тому же существует понятие "виртуального соединения". Нашел интересные статьи на тему UDP, жаль всего 3 из них переведены на хабре http://gafferongames.com/networking-...e-programmers/


Часовой пояс GMT +4, время: 15:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot