PDA

Просмотр полной версии : буфер XMLSocket


Ivandralex
11.04.2008, 02:03
Я пишу jabber клиент на flex. Использую XMLSocket для отправки xml запросов серверу(в моем случае Openfire). Столкнулся с проблемой:запросы, синтасически верные с точки зрения xmpp, не обрабатываются сервером (он просто не отвечает на запросы). Решил проверить, что и как отсылает XMLSocket. Под рукой оказалась прожка на си++, которая слушает порт и выдает все что на него приходит на консоль(после подключения запускатся thread который вызывает receive в цикле). После соединения двух приложений и отправки данных из flex-клиента наблюдал следующее: Отправляем из флекса сообщение длиной, скажем, 20 символов. си++ принимает первые 4 символа сообщения и выходит из блокировки (блокирующего вызова receive). переходит на следующую итерацию цикла, опять уходит в блокировку, и сразу же принимает следующие 4 символа из отправленного сообщения и т.д. пока все сообщение не будет выведено на консоль.
Вопрос. Почему XMLSocket отсылает именно 4 символа? Не является ли это причиной того, что джаббер сервер не обрабатывает мои запросы (например: сервер получает 4 символа, расценивает их как синтаксически неверный запрос и никак не отвечает на него)? Как заставить (если это вообще необходимо в данной ситуации) XMLSocket отсылать большое число символов?

etc
11.04.2008, 09:53
А почему бы не использовать бинарный сокет?

Ivandralex
11.04.2008, 19:58
XMLSocket и Socket принципиальнь ничем не отличаются. Я использовал XMLSocket потому что с помощью него проще отправлять XML сообщения, конечно я мог бы преобразовать XML в строку, но это не совсем удобно (с использованием e4x код выглядит гораздо более понятным)

max_oil
14.04.2008, 14:35
Когда я писал клиент на XMLSocket, у меня тоже была проблема с серверной частью, эту проблему решал программист серверной части, то есть он чего то там подправил в своем коде и все стало работать..
Что интересно при использовании бинарного сокета, программа работала с обеими версиями серверного приложения..