![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 117
|
Проблема простая, но в то же время как решить не знаю. уже несколько дней пытаюсь решить, но никак.
Суть проблемы: Flash подключается постоянно без проблем. С файлом политики тоже всё отлично. Я открываю флэшку на одном компе два раза. Создавая илюзию двух клиентов в чате. Каждый из клиентов получает свой порт: 192.168.0.128:2842 192.168.0.128:2843 Проблема в том, что Java(сервер) отсылает около 4-ёх сообщений клиенту. Каждые разделяя "\u0000" прерывания. Так вот к первому клиенту все доходят, а ко второму только первые 2. К третьему первые 3. К четвёртому опять все доходят. Логики и закономерности невижу. У кого-нибуть были подобные проблемки? Добавлено через 4 минуты Пробовал в java писать sleep(15). Т.е. после отправки каждого сообщения, сервер ждал 15 мл прежде чем отправить следующее сообщение тому же клиенту. Сделал цикл с отправкой 50 сообщений подряд. Всё заработало. Но вот когда сообщения опять пошли в разброс и не подряд, флэшка опять переодически не перехватывает сообщения. |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 258
|
а в каком режиме работает сокет, блокирующей или нет?
|
|
|||||
|
Регистрация: Mar 2010
Сообщений: 117
|
Уходил, поэтому не мог сразу ответить.
Вообще я забыл упомянуть, что я использую "xmlsocket://". Насколько я знаю: Работа неблокирующих сокетов основана на системных событиях. И т.к. во флэше используются методы: socket.addEventListener(Event.CONNECT, socketConnect);//Подключились к серверу. socket.addEventListener(ProgressEvent.SOCKET_DATA, socketData);//Получили сообщение от сервера. java работает: while (line != null) {}//где line - сообщение принятое от флэш. Как только прирывается, значит клиент вышел. //Может эта часть составлена безграмотно. Учился по статьям в интернете. Добавлено через 14 минут Уточнил в гугле про блокирующий режим: Т.е. на момент приёма данных, работа программы приостанавливается. Ух. Ну я полагаю, что у меня режим не блокирующий. Да и право как сделать блокирующий режим не знаю. Добавлено через 33 минуты А может и правда, можно как-то поставить приоритет. Что бы в случае приёма данных, прерывал работу программы. Если поступает около 40 - 100 байт прирывание для человека будет вообще незаметным. только как данное можно осуществить. Может есть стандартные функции растановки приаритетов? Добавлено через 42 минуты Поставил в java задержку 50 мл, после отправки каждого сообщения. Т.е. после того как отправил, перед тем как отправить следующие сервер выжидает 50 мл(sleep(50)). Работает. Но задержка не есть хорошо. А если одновременно придёт 30 сообщений. То последниму придётся долго ждать. кто-нибуть знает как такое исправить? Последний раз редактировалось Боня; 20.12.2010 в 09:00. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|