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

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

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

Регистрация: Sep 2005
Адрес: Kiev
Сообщений: 73
Отправить сообщение для Annihilator с помощью ICQ
Question Разрыв данных внутри сокет-соединения

Есть два флеш-приложения. В обоих методом socket.send() отсылается абсолютно одинаковый XML. В одном случае он без проблем приходит на сокет-сервер и обрабатывается, в другом - приходит разорваным на две части и естественно вызывает ошибку как невалидный XML. (сокет-сервер один и тот же с одинаковыми параметрами: порт, адрес и т.п.)
Код:
var xml_string='<?xml version="1.0" encoding="UTF-8" ?><ask user_id="35"><item class_obj="scene_objects" id="" method="GetLinkedScenes"><item param="scene_id">85</item><item param="fields">xmap, ymap, linked_scene_id</item><item param="scene_fields">name</item></item></ask>';
socket.send(xml_string);
// вот что возвращает сокет-сервер в случае ошибки:
<?xml version="1.0" encoding="UTF-8" ?>
<error>
  <item param="input XML data error">Name contains invalid start character: '&amp;#x69;' </item>
</error>
Что это может быть?

Старый 01.02.2007, 21:03
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Скорее всего, в одном из приложений используется useCodepage.

Старый 02.02.2007, 12:25
Annihilator вне форума Посмотреть профиль Отправить личное сообщение для Annihilator Найти все сообщения от Annihilator
  № 3  
Ответить с цитированием
Annihilator
 
Аватар для Annihilator

Регистрация: Sep 2005
Адрес: Kiev
Сообщений: 73
Отправить сообщение для Annihilator с помощью ICQ
нет, useCodepage не использую, всё в Unicode-формате.
Главная странность в том, что передача разрывается в одном и том же месте:
<?xml version="1.0" encoding="UTF-8" ?><ask user_id="35"><i - здесь передача обрывается и сервер начинает разбор сообщения;
затем приходит следующая часть в новом сообщении:
tem class_obj="scene_objects" id="" method="GetLinkedScenes"><item param="scene_id">85</item><item param="fields">xmap, ymap, linked_scene_id</item><item param="scene_fields">name</item></item></ask>

Старый 02.02.2007, 13:35
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Могу лишь посоветовать посмотреть в hex-виде разницу.

Старый 02.02.2007, 14:41
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 5  
Ответить с цитированием
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
То, что пакеты в TCP/IP протоколах рвутся на части - это нормально и это зависит от многих параметров, в т.ч. операционка, качество связи и т.п. . Как правило, в сокетах есть всевозможные параметры, которые могут на это влиять - типа размер буфера передачи и т.п. Правильный сокет не должен по приходу одного пакета сразу его обрабатывать - он должен накапливать приходящие данные в своем буфере и смотреть наличие в этом буфере маркера конца данных (в случае Флэшового XML сокета это нулевой байт). Как только маркер найден - обрабатываем из буфера данные до этого маркера, удаляем из буфера эти данные и продолжаем его дописывать приходящими пакетами до появления следующего маркера.

Так что смотри свой сокет-сервер... На чем он написан? Сам писал или уже что-то готовое взял? Может там есть какие настройки...

Или, что мало вероятно, после символа "<i" откуда-то затискивается нулевой байт, вводящий в заблуждение сокет-сервер.
__________________
Two beer or not two beer?...

Старый 02.02.2007, 19:17
Annihilator вне форума Посмотреть профиль Отправить личное сообщение для Annihilator Найти все сообщения от Annihilator
  № 6  
Ответить с цитированием
Annihilator
 
Аватар для Annihilator

Регистрация: Sep 2005
Адрес: Kiev
Сообщений: 73
Отправить сообщение для Annihilator с помощью ICQ
to SPV: спасибо, я собсно так и предполагал, но убедить в этом нашего perl-програмера было очень трудно, он обвинял флеш во всём
Выставил он нормальный тайм-аут на ожидание нулевого байта, теперь не обрываются сообщения, ура.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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