Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.03.06;
Скачать: CL | DM;

Вниз

Получение данных TCPServer   Найти похожие ветки 

 
d@vinchi ©   (2009-02-24 19:39) [0]

Подскажите как с помощью компонента TCPServer получить данные, которые не в "заголовке" пакета, а в теле "пакета", т.е. в обработчике события TcpServer1Accept методом ClientSocket.Receiveln успешно читается заголовок пакета, а вот как получить следующие за ним данные?


 
Сергей М. ©   (2009-02-24 19:55) [1]

Чем "заголовок пакета" принципиально отличается от "данных" ?


 
d@vinchi ©   (2009-02-24 20:13) [2]

дело в том что при чтении данных методом Receiveln я получаю не все содержимое пакета, выяснил путем прослушивания трафика программкой wireshark. Когда я получаю данные методом Receiveln то получаю примерно следующее:
INVITE sip:ocs@domain.ru SIP/2.0
ms-user-data: ms-publiccloud=true;ms-federation=true
Record-Route: <sip:ocs.domain.ru:4065;transport=tcp;maddr=x.x.x.x;ms-role-rs-to;lr>;tag=8DA612C8238CD08A57C32B55380FE55C
Via: SIP/2.0/TCP x.x.x.x:4065;branch=z9hG4bKDBB9A545.046C869F;branched=FALSE
...
Content-Type: application/csta+xml

этот же пакет wireshark получает так:
Message Header
INVITE sip:ocs@domain.ru SIP/2.0
ms-user-data: ms-publiccloud=true;ms-federation=true
Record-Route: <sip:ocs.domain.ru:4065;transport=tcp;maddr=x.x.x.x;ms-role-rs-to;lr>;tag=8DA612C8238CD08A57C32B55380FE55C
Via: SIP/2.0/TCP x.x.x.x:4065;branch=z9hG4bKDBB9A545.046C869F;branched=FALSE
...
Content-Type: application/csta+xml
Message Body
<?xml version="1.0"?><RequestSystemStatus xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3"><extensions>.......

Судя по тому что wireshark разбил пакет на заголовок и тело пакета, я предположил что последняя строка в отдельном блоке данных - в любом случае методом Receiveln она не читается, а нужно ее достать!!!


 
Сергей М. ©   (2009-02-25 08:17) [3]

Что значит "не читается" ?


 
brother ©   (2009-02-25 09:23) [4]

а она должна возвращать?


 
d@vinchi ©   (2009-02-25 09:42) [5]

to Сергей М.: значит что Receiveln не возвращает эту строку...
to brother: предпологаю что нет, может эта строка передается в потоке или еще как...


 
brother ©   (2009-02-25 09:46) [6]

> to brother: предпологаю что нет, может эта строка передается
> в потоке или еще как...

может хватит гадать? прочитай в справке...


 
d@vinchi ©   (2009-02-25 09:49) [7]

еслибы я в справке нашел ответ тут бы не задавал глупых вопросов - все осложняется что с приемом\передачей данных по сети сталкиваюсь впервые и времени как обычно нет...
уважаемый, brother, без обид - лучше умничать по делу...


 
brother ©   (2009-02-25 09:50) [8]

код получения показывай!)


 
d@vinchi ©   (2009-02-25 10:03) [9]

procedure TForm1.TcpServer1Accept(sender: TObject; ClientSocket: TCustomIpClient);
var
 s: string;
begin
 repeat
   begin
     s:=ClientSocket.Receiveln;
     if s <> "" then Memo1.Lines.Add(s);
   end
 until s = "";
end;


 
Сергей М. ©   (2009-02-25 10:07) [10]


> d@vinchi


Чему у тебя равно св-во BlockMode ?


 
d@vinchi ©   (2009-02-25 10:12) [11]

bmThreadBlocking


 
Сергей М. ©   (2009-02-25 10:25) [12]

В доп.потоке обращение к виз. VCL-контролам недопустимо.
Обработчик OnAccept в случае bmThreadBlocking выполняется в доплнительном потоке.


 
d@vinchi ©   (2009-02-25 10:31) [13]

т.е. надо использовать не зизуальный компонент? что тогда использовать (желательно с аналогичным примерчиком)?


 
Сергей М. ©   (2009-02-25 10:35) [14]


> надо использовать не зизуальный компонент?


Ты что вообще сотворяешь ? SIP-прокси что ли ?


 
Сергей М. ©   (2009-02-25 10:43) [15]

Читать

http://www.niits.ru/public/2003/011.pdf

п.7.5.1 непосредственно связан с темой твоего вопроса


 
d@vinchi ©   (2009-02-25 10:43) [16]

ну можно сказать и так, вообще больше SIP-шлюз...


 
Сергей М. ©   (2009-02-25 10:49) [17]

Ну тогда читай этот док-т до полного просветления.
Работа с транспортом по этому протоколу практически не отличается от работы по протоколу HTTP, а по HTTP-серверам в Тырнете навалом примеров


 
d@vinchi ©   (2009-02-25 11:01) [18]

Сергей М. - огромное спасибо за информацию!!! в п.7.1.5. действительно решение!!!



Страницы: 1 вся ветка

Текущий архив: 2011.03.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
2-1292346008
kak-bydima
2010-12-14 20:00
2011.03.06
видео с youtube


15-1290590811
Alx2
2010-11-24 12:26
2011.03.06
Мощность ракеты


2-1292568970
12
2010-12-17 09:56
2011.03.06
Картинка из TImageList на кнопку TBitBtn


15-1290795366
bss
2010-11-26 21:16
2011.03.06
Компонент наподобии TPanel со встроенными контролами


6-1235493550
d@vinchi
2009-02-24 19:39
2011.03.06
Получение данных TCPServer