![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение данных 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]Чем "заголовок пакета" принципиально отличается от "данных" ?