Просмотр полной версии : Потеря пакетов
Godwarlock
21.08.2015, 19:41
Всем привет. В общем более менее начинаю реализовать сокетный сервер, но вот вчера столкнулся с такой проблемой, что клиент странным образом то принимал строку, то не принимал, причем не принимал гораздо чаще, 1/10 принимал грубо говоря. Стоило было убрать в отправляемой строке 1 символ, как вроде, но всё же с опаской стал принимать все 10/10. С чем это может быть связано?
caseyryan
22.08.2015, 08:21
Надо полагать, финализирующий нулевой байт добавляется к каждой строке?
Godwarlock
22.08.2015, 14:16
Да конечно. Разобрался в чем проблема была, сообщение отправлялось из-за ошибки в цикле другому клиенту
Добавлено через 14 часов 3 минуты
С этой проблемой вроде как разобрался, но теперь опять же появилась эта проблема с передачей. Некоторые запросы от сервера передаются клиенту(нужному клиенту), клиент то отлавливает какие-то запросы, какие-то нет. То есть может 8 раз одно и тоже в промежутке 7 секунд между запросами получить, а 8 пропускает(на сервере этот 8 раз обрабатывается и он отправляется тем же путем клиенту, что и предыдущие), но клиент игнорирует. На 9 раз опять нормально, а то и на 13 и 15, а вот на 16 опять может прозебать. Вот тут пока я что-то не могу понять в чем косяк.
Добавлено через 15 часов 21 минуту
В общем заметил такую штуку. Как только фпс просядет на 25%(соответственно появляются небольшие лаги), то как раз в этот момент пакеты не доходят. Как исправить?
p.s
Не знаю правильно ли я решил проблему, но особо долго не думая, решил активировать на стороне сервера таймер, который проверяет получил ли пользователь в течении 4 секунд сообщение - если нет, то повторно отправляю ему информацию. Если игрок получил информацию то в ответ посылает серверу о том, что да типо инфа получена всё хорошо и таймер в итоге просто обрубается, иначе будет создаваться новый таймер до тех пор, пока игрок не был отключен от сервера или не получит всё таки это сообщение.
Добавлено через 40 часов 11 минут
В общем фиг его знает. С таймера тоже не особо хорошая фишка как оказалось на практике. Подскажите, почему всё таки данные с сервера не доходят до клиента? Они просто не доходят.
private function socketData(event:ProgressEvent):void
{
var msg:String = readUTFBytes(bytesAvailable);
trace(msg);
}
Сервер говорит что отправил данные - во флеше trace ничего не выводит о тех пакетах которые пропали. То есть я даже без понятия как отследить, в чем собственно косяк.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.