PDA

Просмотр полной версии : XMLSocket. 2 xml - 2 сокет-соединения? Передача серверу последовательности байтов


JaLav
14.04.2008, 03:34
Здравствуйте.
Пытаюсь разобраться с сокетами. :)
И по ходу возникли вопросы:

От сервера я получаю xml-ки
Раньше делала так

sender=new LoadVars();
xml1=new XML();
xml1.ignoreWhite=true;
xml1.onLoad=function()
{
// действия1
}
sender.Request=send_xml1 (send_xml1 - xml-ка в виде строки);
sender.sendAndLoad(путь(имя_сервера+имя_серверного скрипта), xml1, "POST");
xml2=new XML();
xml2.ignoreWhite=true;
xml2.onLoad=function()
{
// действия2
}
sender.Request=send_xml2;
sender.sendAndLoad(путь(имя_сервера+имя_серверного скрипта), xml2, "POST")


Теперь хочу сделать такое же через сокеты
Делаю так

mySocket=new XMLSocket();
mySocket.onConnect=function()
{
trace('законнектились')
}
mySocket.connect(имя_сервера, порт)

С этим все ок
Дальше надо передать серверу 2 разных хмл и получить 2 ответа, которые надо по-разному обрабатывать

mySocket.onXML=function(XML_ответ)
{
// действия1 или действия2?
}
mySocket.send(send_xml1);
mySocket.send(send_xml2);

Вопрс№1: Как узнать, ответ на какой запрос пришел? Надо делать 2 сокет-соединения?

+раньше посылали запросы серверному скрипту, а сейчас только указываем имя сервера при коннекте. Но запросы же тоже должен обрабатывать какой-то скрипт..
Вопрос№2: Куда ж мы отправляем запросы, если не скрипту?

Дано еще такое:


Заголовок при соединении

* Певый байт, определяющий сжатие: 0х00 - без сжатия, 0х01 - сжатие GZip
* Второй байт, определяющий шифрования: 0х00 - без шифрования, 0х01 - шифрование DES
* Третий байт, указывающий на длину ключа в байтах (если нет шифрования, то 0х00)
* Ключ (если есть)


[править] Разделитель

Это последовательность из 4-х байт {0х00, 0xAA, 0xFF, 0xAA} которая должна отправляться после каждого сообщения.
[править] Окончания сеанса

При окончании сеанса отправляется <EXIT> и Разделитель.

Вопрос №3: Каким образом передать эту инфу серверу?