Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение данных TCPServer


d@vinchi ©   (2009-02-24 19:39:00) 

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


d@vinchi   (2009-02-25 11:01:00) [1]

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


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

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


d@vinchi   (2009-02-25 10:43:00) [3]

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


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

Читать

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

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


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


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


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


d@vinchi   (2009-02-25 10:31:00) [6]

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


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

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


d@vinchi   (2009-02-25 10:12:00) [8]

bmThreadBlocking


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


> d@vinchi


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


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

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;


brother   (2009-02-25 09:50:00) [11]

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


d@vinchi   (2009-02-25 09:49:00) [12]

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


brother   (2009-02-25 09:46:00) [13]

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

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


d@vinchi   (2009-02-25 09:42:00) [14]

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


brother   (2009-02-25 09:23:00) [15]

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


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

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


d@vinchi   (2009-02-24 20:13:00) [17]

дело в том что при чтении данных методом 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-24 19:55:00) [18]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо