RakNet : большое время доставки пакетов
разбирался вчера с RakNet, хорошая либа
работает с UDP, имеет встроенные средства доссылки пакетов, проверки на целостность, отправки файлов и тд и тп только вот время доставки пакета туда и обратно между двумя прогами на одном компе было около 70 мс что меня жутко ужасало воспользовался встроеным средством для пинга, возращает 0-1 мс так вчера (уже сегодня) и уснул не разобравшись на свежую голову написал все на чистом использовании функций RakNet и нашол боттлнек ! либа работает на потоках, отсылка и прием сообщений не задерживают цикл проги после отсылки пакета с клиента на сервер, я убирал delay(1) из цикла клиента (типа ожидание пакета), но не учел того что программа тогда перехватывает все ресурсы себе и остальным уже мало что остается по-скольку под RakNet очень мало примеров для BMax то выкладываю суда код тестовой проги : (может кому интересно будет) Код:
SuperStrict с помощью EnableServer и EnableClient переменных можно сделать отдельно как сервер так и клиент время отсылки пакета на сервер и обратно около 4 мс (все засыпания длятся около 3.5 мс, так что входит в норму) библиотека имеет контроль потока, стабилизация пинга произойдет через 10-20 пакетов скачать враппер вы можете сдесь : http://repeatuntil.free.fr/raknet/index.html |
Ответ: RakNet : большое время доставки пакетов
Главные тесты это через инет!
|
Ответ: RakNet : большое время доставки пакетов
FDsagizi
тестить пока не с кем :( у меня нету внешнего ip |
Ответ: RakNet : большое время доставки пакетов
С проксями и внутренним Ip как понял голименько получается?
jimon, если у тебя открытые есть порты, и не прокси - тогда у тебя всё должно прокатить, главное узнай свой внешний Ip, можешь тут: http://www.utorrent.com/testport.php?port=30001 заодно и порт найди открытый. |
Ответ: RakNet : большое время доставки пакетов
MoKa
не работает, с другого компа даже мой комп не могут по-пинговать хотя аутпост и все остальное отключено |
Ответ: RakNet : большое время доставки пакетов
jimon, тогда твой провайдер - паскуда..
|
Ответ: RakNet : большое время доставки пакетов
Цитата:
|
Ответ: RakNet : большое время доставки пакетов
Народ, а кто знает какой номер у последней версии врапера raknet для Блитца? а то я запутался... ( у мну есть: www.lcuriel.arrakis.es/raknetwrapper2483.rar и RakNetWrapper3.00_release)
|
Ответ: RakNet : большое время доставки пакетов
GoodWin
как я знаю - RakNetWrapper3.00_release последняя |
Ответ: RakNet : большое время доставки пакетов
просто я в 3 версии не нашел вот этих вот функций:
RN_CreatePlayerIDFromPacket(packet) RN_ServerGetPlayerIPFromID(server,PlayerID) или я слепой? или может кто подскажет как их реализовать? |
Ответ: RakNet : большое время доставки пакетов
вот из RakNet.bmx нужные функции :
RN_GetIndexFromSystemAddress RN_GetSystemAddressFromIndex RN_PacketGetplayerIndex RN_PacketGetSystemAddress |
Ответ: RakNet : большое время доставки пакетов
Цитата:
RN_PacketGetplayerIndex - это понятно, но только на стороне сервера можно получить RN_GetIndexFromSystemAddress(rakPeerInterface,syst emAddress) - а это функция возвращает индекс (индекс чего?) по системному адресу (что за адрес такой и как его получить (подозреваю, что RN_PacketGetSystemAddress%(packet%), которая возвращает адрес клиента от которого пришел пакет?... или адрес пакета в памяти?))? RN_GetSystemAddressFromIndex(rakPeerInterface,inde x) - а эта наоборот получается... лана буду пробывать, т.с. эмпирическим путем понимать суть вопроса... :) побывал...пробывал... но никак не получается получить на стороне клиента его индекс... блин... Хелп!!! |
Ответ: RakNet : большое время доставки пакетов
зачем на стороне клиента индекс ? O_o
клиент в клиент-серверной архитектуре имеет только одно подключение - к серверу потому индекс подключения на клиенте - ноль ( 0 ) ты не можешь получить на стороне клиенте индекс подключения клиента на сервере а на сервере получаешь адресс когда приходит пакет о подключении потом из адресса получаешь индекс - и юзаешь его потом перед посылкой пакета с сервера на клиент просто переводишь индекс опять в адресс внутрении адресса могут менятся во время подключения потому нужно использовать индексы |
Ответ: RakNet : большое время доставки пакетов
не скажу, что совсем ничего не понял... буду думать... а проблема у мну такая...
при подключении клиента на сервере создается игрок и ему присваивается ИД по индексу... с клиента на сервер отправляются пакеты с состоянием клавиш управления... на сервере происходит обновление игроков и отправляются на клиенты положения всех игроков... (в пакете кроме координат отсылается ИД игрока) и тут возникает проблема... не могу идентифицировать пакеты игрока по ИД на клиенте... П.С. возникла идея... идентифицировать игрока по его имени, но тогда нужно проверять вводимое имя на незанятость.... |
Ответ: RakNet : большое время доставки пакетов
GoodWin
1) клиент подключается к серверу 2) сервер ловит ID_NEW_INCOMING_CONNECTION и создает у себя игрока, получает индекс сойденения но у нас было только подключение на заданный порт глупо сейчас считать это подключение нормальным будем считать что подключение требует инициализации 3) клиент получает ID_CONNECTION_REQUEST_ACCEPTED после этого клиент может узнать индекс подключению к серверу после подключения отправляем пакет инициализации на сервер обычно в пакете задают информацию о типе програмы клиента, её версии и прочего, иногда даже информация о шифровании в худшем случае клиент подключает ID_CONNECTION_ATTEMPT_FAILED тогда нужно подключится заново, а сервер удалит старое не инициализированое подключение по time-out (прошло много времени, а пакет инициализации не пришол) 4) сервер получает пакет инициализации, из пакета получаем индекс подключения и ищем такого игрока записываем нужную информацию что пришла с пакетом генерируем уникальный индекс для игрока (индекс подключения лутче не использовать, черт его знает что случится сним) и отправляем примерно такой же пакет инициализации игроку в нем записываем id игрока, версию протокола и прочее 5) клиент получает пакет инициализации и записывает из него свой id и прочую нужную информацию после всего этого подключение считается завершенным и клиент и сервер начинают свою работу ps. именно так у меня всё работает в проекте :) |
Часовой пояс GMT +4, время: 00:35. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot