HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Как же работаю сетевые игры?
  #1  
Старый 30.03.2010, 16:54
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
С нами: 9626394

Репутация: 357


По умолчанию Как же работаю сетевые игры?

Недавно задумался как работают игры на UDP протоколе, если UDP не отвечает на пакеты и не устанавливает соединение...
Так же для использование UDP в приложение должна быть серверная часть (как на стороне сервера так и клиента), но компы клиентов могут быть под NAT'ом

Так как работают игры??? или я может быть не так много знаю о UDP
 
Ответить с цитированием

  #2  
Старый 30.03.2010, 18:31
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
С нами: 10060964

Репутация: 52
По умолчанию

Немного по твоей теме.
http://wiki.minegoboom.com/ (ENG)

Последний раз редактировалось JnK; 30.03.2010 в 18:45..
 
Ответить с цитированием

  #3  
Старый 30.03.2010, 18:42
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
С нами: 9626394

Репутация: 357


По умолчанию

То есть игры работает не на чистом UDP, так?
 
Ответить с цитированием

  #4  
Старый 30.03.2010, 18:43
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
С нами: 10067064

Репутация: 455


По умолчанию

Конечно плохое сравнение но все же. Работа игр схожа с асинхронными сокетами..
 
Ответить с цитированием

  #5  
Старый 30.03.2010, 18:57
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
С нами: 10060964

Репутация: 52
По умолчанию

Если слать UDP пакеты, через нат (от клиента) сервер их получать не будет.
UDP можно использовать только как объявление себя сервером (но всеравно бывают случаи, что не доходят пакеты), остальная часть игры используется в частности TCP протокол.

Вот еще ссылка по этой теме:
UDP протокол для Интернета? (проблемы NAT)

Последний раз редактировалось JnK; 30.03.2010 в 19:07..
 
Ответить с цитированием

  #6  
Старый 30.03.2010, 19:51
Retimiled
Banned
Регистрация: 24.12.2009
Сообщений: 141
С нами: 8622379

Репутация: 45
По умолчанию

НЕ ПАРЬТЕСЬ NAT предназначен как для TCP так и для UDP

они ничем не отличаются .... все так же как с TCP вы прописываете правила NAT SUA и все работает....

для различных типов роутеров может носить названия Port forwarding , Virtual servers итд

вы говорить роутеру что все входящие на данный порт пересылать на следующий внутренний IP!

Другое дело что для UDP нужно настраивать NAT и для клиента(если клиент за NAT) а не только для сервера!
 
Ответить с цитированием

  #7  
Старый 30.03.2010, 20:22
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
С нами: 9626394

Репутация: 357


По умолчанию

Цитата:
остальная часть игры используется в частности TCP протокол.
К примеру игра CS реализована полностью на UDP, как же клиенты подключаются и обмениваются информацией в 2 стороны???
 
Ответить с цитированием

  #8  
Старый 30.03.2010, 21:49
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

а что тут сложного? Когда кол-во передаваемых данных не большое то всё нормально пашет. Другое дело последовательность пакетов может быть нарушена.
если в TCP за последовательность отвечает драйвер TCP протокола, то тут уже придется тебе самому чтото придумывать.
NAT и UDP спокойно работают вместе. банальный пример - DNS протокол. Он спокойно работает в обе стороны. Фишка в том, что когда ты посылаешь на сервак UDP пакет.
То NAT сервер запоминает адрес и порт отправителя, далее изменяет адрес отправителя и посылает серваку жтот запрос. сервак отвечат. Далее NAT проверят порт кому предназначается пакет, затем по нему определяет кому в сети он предназначался. Система хоть и ненадежная но всёже.
Для игр всё просто. тут.
 
Ответить с цитированием

  #9  
Старый 31.03.2010, 09:52
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
С нами: 9626394

Репутация: 357


По умолчанию

slesh, а если за NATом 2 компа, и для сервера их IP будут одинаковы, сервер отправит пакет на этот IP то кому придет этот пакет?
 
Ответить с цитированием

  #10  
Старый 31.03.2010, 11:19
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

ну я же говорю - тут по соответствию портов всё идет.
там идет связь исходящего запроса со клиентскими данными.
Образно говоря типа так:
1) Послал клиент запрос на сервак. Данные отправились с IP1:P1
2) Послал другой клиент запрос на сервак. Данные отправились с IP2:P2
3) эти пакеты дошли до NAT сервера. он сделал свой запрос на указанный сервер. Сделав соответствие IP:PORT клиента и порт запроса для сервера.
Когда сервак отвечает, то NAT смотрит к какому его порту было воответствие. После чего пересылает данный пакет нужному клиенту.
Чтобы это всё пахало нормально, клиент должен сам инициализировать первый исходящий пакет для того чтобы NAT смог связывать их.
Мож технически както по другому это устроена но алгоритм примерно такой.
Для TCP - там еще легче. Он просто тупо в запросе поменяет адрес исходящий. А в ответе просто сверяет со своей таблицей соответствия
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Халявный интернет или как спрятаться надежнее чем VPN или SSH с цепочкой соксов. kodzero Статьи 20 06.08.2010 23:54
Социальная инженерия. Профессиональное программирование. Последовательный взлом dinar_007 Болталка 15 23.12.2008 12:30



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.