Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.12.2010, 22:31
Боня вне форума Посмотреть профиль Отправить личное сообщение для Боня Найти все сообщения от Боня
  № 1  
Ответить с цитированием
Боня

Регистрация: Mar 2010
Сообщений: 117
По умолчанию Flash +java + Socket Проблема с приёмом данных.

Проблема простая, но в то же время как решить не знаю. уже несколько дней пытаюсь решить, но никак.
Суть проблемы:
Flash подключается постоянно без проблем. С файлом политики тоже всё отлично.
Я открываю флэшку на одном компе два раза. Создавая илюзию двух клиентов в чате. Каждый из клиентов получает свой порт:
192.168.0.128:2842
192.168.0.128:2843

Проблема в том, что Java(сервер) отсылает около 4-ёх сообщений клиенту. Каждые разделяя "\u0000" прерывания. Так вот к первому клиенту все доходят, а ко второму только первые 2. К третьему первые 3. К четвёртому опять все доходят. Логики и закономерности невижу.

У кого-нибуть были подобные проблемки?

Добавлено через 4 минуты
Пробовал в java писать sleep(15). Т.е. после отправки каждого сообщения, сервер ждал 15 мл прежде чем отправить следующее сообщение тому же клиенту.
Сделал цикл с отправкой 50 сообщений подряд. Всё заработало. Но вот когда сообщения опять пошли в разброс и не подряд, флэшка опять переодически не перехватывает сообщения.

Старый 19.12.2010, 23:06
membrilius вне форума Посмотреть профиль Отправить личное сообщение для membrilius Найти все сообщения от membrilius
  № 2  
Ответить с цитированием
membrilius
 
Аватар для membrilius

Регистрация: Aug 2008
Сообщений: 258
а в каком режиме работает сокет, блокирующей или нет?

Старый 19.12.2010, 23:19
Боня вне форума Посмотреть профиль Отправить личное сообщение для Боня Найти все сообщения от Боня
  № 3  
Ответить с цитированием
Боня

Регистрация: Mar 2010
Сообщений: 117
Уходил, поэтому не мог сразу ответить.
Вообще я забыл упомянуть, что я использую "xmlsocket://".
Цитата:
Сообщение от membrilius Посмотреть сообщение
а в каком режиме работает сокет, блокирующей или нет?
Насколько я знаю:
Работа неблокирующих сокетов основана на системных событиях. И т.к. во флэше используются методы:
Код AS3:
socket.addEventListener(Event.CONNECT, socketConnect);//Подключились к серверу.
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketData);//Получили сообщение от сервера.
То полагаю режим неблокирующий. могу в даных познаниях ошибаться. если, что подскажите, я попробую ответить. А что касательно java то как я ранее упомянул с ним проблем нет, принимает и передаёт.

java работает:
Код AS3:
while (line != null)
{}//где line - сообщение принятое от флэш. Как только прирывается, значит клиент вышел.
//Может эта часть составлена безграмотно. Учился по статьям в интернете.
Как я понимаю даже когда я не отправляю в чате никаких сообщений серверу. Флэшка сама отпраляет ему постоянно логическую 1. Дабы показать, что соединение не прервано. Может как-то подобное можно улучшить?.

Добавлено через 14 минут
Уточнил в гугле про блокирующий режим:
Т.е. на момент приёма данных, работа программы приостанавливается.
Ух. Ну я полагаю, что у меня режим не блокирующий. Да и право как сделать блокирующий режим не знаю.

Добавлено через 33 минуты
А может и правда, можно как-то поставить приоритет. Что бы в случае приёма данных, прерывал работу программы. Если поступает около 40 - 100 байт прирывание для человека будет вообще незаметным. только как данное можно осуществить.
Может есть стандартные функции растановки приаритетов?

Добавлено через 42 минуты
Поставил в java задержку 50 мл, после отправки каждого сообщения. Т.е. после того как отправил, перед тем как отправить следующие сервер выжидает 50 мл(sleep(50)). Работает. Но задержка не есть хорошо. А если одновременно придёт 30 сообщений. То последниму придётся долго ждать.
кто-нибуть знает как такое исправить?


Последний раз редактировалось Боня; 20.12.2010 в 09:00.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.