Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Работа с сетью > socket приходит не полный пакет java to AS3 |
Автор: mansoff 11.1.2013, 14:14 | ||||
Всем привет, столкнулся с такой проблеммой на сокетах: java -> as3 доходят не полностью пакеты. Есть java socket сервер, который просто пересылает приянятые данные на нужный клиент AS3. И есть клиенты - которые перекидываются JSON Sting. (шлют они их с приличной частотой) Пакеты примерно по 4000 символов Сервер использует printStream для отсылки сообщений
На AS3 данные получаются так
Теперь самое интересное: запускаю код на Windows - пакеты приходят как надо запускаю код на unix на мощном сервере - почти все приходят битые В любой версии вывод сервера показывает что java получает пакеты полностью Куда копать ошибку? Обычно бывает из-за того, когда 2 пакета идут друг за другом ... |
Автор: COVD 11.1.2013, 21:14 |
наличие в коде bytesAvailable дает повод предположить, что вы читаете строку так, как если бы она приходила целиком и bytesAvailable было равно длине строки. На самом деле строка может приходить к получателю по одному байту и bytesAvailable указывает буквально сколько байт получено, но не сколько отправлено. Никакого связи с операционными системами эта распространенная ошибка не имеет. |
Автор: mansoff 15.1.2013, 12:15 | ||
Может кому поможет: долго мучался, после получения начала пакета, пытался сразу вызвать
т.е получение конца (у меня в начале пакета стоит его длинна), но flash не СИ, нельзя вручную что-то получить, надо ждать следущий event по ProgressEvent.SOCKET_DATA в нём будет недостающий конец. |