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