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

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

обработка пакета сервера


Страницы:   1 2

Дмитрий ©   (2010-03-30 03:51:00) 

Уважаемые форумчане ) подскажите пожалуйста, каким образом можно обработать пакет, который сервер посылает мне.
Вот часть программки
begin
ip_con:='**.***.***.***';
for i:=66650 to 66666 do
begin
 TcpClient2.RemoteHost:=ip_con;
 TcpClient2.RemotePort:=IntToStr(i);
 TcpClient2.Open;
 if TcpClient2.Connected then
   begin
       sendedLen := TcpClient2.SendBuf(buf1[0], SizeOf(buf1));
       showmessage('пакет отправлен');
//
// обработка пакетов сервера
//
end
 else


И мне бы хотелось, тот пакет, что отсылает мне сервер записать по байтам в массив. Возможно будет ли такое вытворить ?


Сергей М.   (2010-04-09 09:16:00) [21]


> Dennis I. Komarov ©   (09.04.10 09:11) [12]


А я знаю зачем ?)
Вероятно потому что про различные режимы автор вообще ничего не знает.


Сергей М.   (2010-04-09 09:15:00) [22]

Потому что внутренняя очередь передачи в каждый момент времени имеет вполне определенный фиксированный размер (по умолчанию - 8 кбайт)
Send-методы помещают данные, предназначенные к передаче, в хвост этой очереди, из головы которой данные передаются потоком по мере готовности канала к передачи очередной порции данных. И если места для помещения очер.сообщения в хвосте очереди недостаточно, вызов Send-метода завершается отказом, о чем свидетельствует возбуждение события OnError с кодом отказа равным WSAEWOULDBLOCK.


Dennis I. Komarov   (2010-04-09 09:11:00) [23]


> Сергей М. ©   (08.04.10 13:57) [10]

А за каким ему неблокирующий?


Дмитрий   (2010-04-08 22:59:00) [24]

Германн,
Я отправил серверу пакет, после этого сервер отвечает и мне нужно обработать этот пакет( записать по байтам его в массив )

Сергей М.
Сергей, а почему они могут не дойти до партнёра ?


Сергей М.   (2010-04-08 13:57:00) [25]


> Дмитрий   (08.04.10 01:45) [8]


Прежде чем что-то получить сначала надо это "что-то" успешноотправить.

Без обработки события OnError ни о какой уверенности в успешной отправке и речи быть не может.

То что ты "выплюнул" вызовом метода SendBuf вовсе не говорит о том что "выплюнутые" тобой данные успешно отправлены партнеру.


Германн   (2010-04-08 02:17:00) [26]


> Дмитрий   (08.04.10 01:45) [8]
>
> Сергей М., большое спасибо за совет, но мне бы хотелоь бы
> всё таки узнать, как можно получить и обработать пакет .
> ..
>

"Дайте код.
Книжки и хелп читать влом."


> а кто может дать ответ чуть по конкретней и по моему вопросу
> ?

А вопрос-то какой?


Дмитрий   (2010-04-08 01:45:00) [27]

Сергей М., большое спасибо за совет, но мне бы хотелоь бы всё таки узнать, как можно получить и обработать пакет ...


Сергей М.   (2010-03-31 16:58:00) [28]


> Дмитрий


Обработка  события OnError в неблок. режиме крайне важна.


Плохиш   (2010-03-31 16:56:00) [29]

OnReceive


Дмитрий   (2010-03-31 16:29:00) [30]

а кто может дать ответ чуть по конкретней и по моему вопросу ? )


Вариант   (2010-03-30 15:13:00) [31]

Из  мелочей могут сложиться большие проблемы.

Изучи директорию DEMOS в дельфи, там есть код по работе с сокетами (по крайней мере в дельфи 6)


Дмитрий   (2010-03-30 15:09:00) [32]

Это как бы мелочи, порт указан неверный, на самом деле клиент и сервер общаются через другой порт...
На счёт сообщения, для меня это мелочи, главное - написать код для обработки пакета с сервера


Сергей М.   (2010-03-30 09:59:00) [33]


> showmessage('пакет отправлен');


В неблокирующем режиме это сообщение может оказаться враньем.


Вариант   (2010-03-30 06:05:00) [34]


> Дмитрий   (30.03.10 03:51)  


> И мне бы хотелось, тот пакет, что отсылает мне сервер записать
> по байтам в массив. Возможно будет ли такое вытворить ?


Возможно.


> for i:=66650 to 66666 do
> begin
>  TcpClient2.RemoteHost:=ip_con;
>   TcpClient2.RemotePort:=IntToStr(i);

А вот максимальный номер порта ограничен числом 65535


Страницы:   1 2

Наверх

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