Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизобработка пакета сервера Найти похожие ветки
← →
Дмитрий (2010-03-30 03:51) [0]Уважаемые форумчане ) подскажите пожалуйста, каким образом можно обработать пакет, который сервер посылает мне.
Вот часть программки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-03-30 06:05) [1]
> Дмитрий (30.03.10 03:51)
> И мне бы хотелось, тот пакет, что отсылает мне сервер записать
> по байтам в массив. Возможно будет ли такое вытворить ?
Возможно.
> for i:=66650 to 66666 do
> begin
> TcpClient2.RemoteHost:=ip_con;
> TcpClient2.RemotePort:=IntToStr(i);
А вот максимальный номер порта ограничен числом 65535
← →
Сергей М. © (2010-03-30 09:59) [2]
> showmessage("пакет отправлен");
В неблокирующем режиме это сообщение может оказаться враньем.
← →
Дмитрий (2010-03-30 15:09) [3]Это как бы мелочи, порт указан неверный, на самом деле клиент и сервер общаются через другой порт...
На счёт сообщения, для меня это мелочи, главное - написать код для обработки пакета с сервера
← →
Вариант (2010-03-30 15:13) [4]Из мелочей могут сложиться большие проблемы.
Изучи директорию DEMOS в дельфи, там есть код по работе с сокетами (по крайней мере в дельфи 6)
← →
Дмитрий (2010-03-31 16:29) [5]а кто может дать ответ чуть по конкретней и по моему вопросу ? )
← →
Плохиш © (2010-03-31 16:56) [6]OnReceive
← →
Сергей М. © (2010-03-31 16:58) [7]
> Дмитрий
Обработка события OnError в неблок. режиме крайне важна.
← →
Дмитрий (2010-04-08 01:45) [8]Сергей М., большое спасибо за совет, но мне бы хотелоь бы всё таки узнать, как можно получить и обработать пакет ...
← →
Германн © (2010-04-08 02:17) [9]
> Дмитрий (08.04.10 01:45) [8]
>
> Сергей М., большое спасибо за совет, но мне бы хотелоь бы
> всё таки узнать, как можно получить и обработать пакет .
> ..
>
"Дайте код.
Книжки и хелп читать влом."
> а кто может дать ответ чуть по конкретней и по моему вопросу
> ?
А вопрос-то какой?
← →
Сергей М. © (2010-04-08 13:57) [10]
> Дмитрий (08.04.10 01:45) [8]
Прежде чем что-то получить сначала надо это "что-то" успешно отправить.
Без обработки события OnError ни о какой уверенности в успешной отправке и речи быть не может.
То что ты "выплюнул" вызовом метода SendBuf вовсе не говорит о том что "выплюнутые" тобой данные успешно отправлены партнеру.
← →
Дмитрий (2010-04-08 22:59) [11]Германн,
Я отправил серверу пакет, после этого сервер отвечает и мне нужно обработать этот пакет( записать по байтам его в массив )
Сергей М.
Сергей, а почему они могут не дойти до партнёра ?
← →
Dennis I. Komarov © (2010-04-09 09:11) [12]
> Сергей М. © (08.04.10 13:57) [10]
А за каким ему неблокирующий?
← →
Сергей М. © (2010-04-09 09:15) [13]Потому что внутренняя очередь передачи в каждый момент времени имеет вполне определенный фиксированный размер (по умолчанию - 8 кбайт)
Send-методы помещают данные, предназначенные к передаче, в хвост этой очереди, из головы которой данные передаются потоком по мере готовности канала к передачи очередной порции данных. И если места для помещения очер.сообщения в хвосте очереди недостаточно, вызов Send-метода завершается отказом, о чем свидетельствует возбуждение события OnError с кодом отказа равным WSAEWOULDBLOCK.
← →
Сергей М. © (2010-04-09 09:16) [14]
> Dennis I. Komarov © (09.04.10 09:11) [12]
А я знаю зачем ?)
Вероятно потому что про различные режимы автор вообще ничего не знает.
← →
Dennis I. Komarov © (2010-04-09 09:21) [15]
> Вероятно потому что про различные режимы автор вообще ничего
> не знает.
Ну, это конечно так, но он про них и ничего не говорил... ;)
← →
Сергей М. © (2010-04-09 09:24) [16]
> он про них и ничего не говорил
Так он еще и граблями не получил)
Но рано или поздно обязательно получит, как только разнесет своих клиента и сервера по разным хостам)
По-умолчанию ведь NonBlocking)
← →
Dennis I. Komarov © (2010-04-09 09:28) [17]
> По-умолчанию ведь NonBlocking)
Да, ну?!?
← →
Сергей М. © (2010-04-09 09:43) [18]
> Да, ну?!?
Вообще да, ты прав)constructor TBaseSocket.Create(AOwner: TComponent);
begin
..
FBlockMode := bmBlocking;
Это у меня "смешались в кучу кони, люди.." - TTCPClient, TClientSocket
)
← →
Dennis I. Komarov © (2010-04-09 09:53) [19]
> Сергей М. © (09.04.10 09:43) [18]
Не переживай, :) грабель на сих просторах видимо-невидимо... Найдет...
← →
Сергей М. © (2010-04-09 10:32) [20]
> Dennis I. Komarov © (09.04.10 09:53) [19]
> Найдет...
Вне сомнения)
← →
Anatoly Podgoretsky © (2010-04-09 11:43) [21]> Сергей М. (09.04.2010 09:16:14) [14]
Так ему не А за каким ему неблокирующий нужен, а книги.
← →
Дмитрий (2010-04-09 16:26) [22]Вот жуть то какая )
Народ, тогда задам вопрос такой:
не глядя на кусоч программы, который я скинул в первом сообщении, подскажите каким образом можно принять пакет и записать его
← →
Dennis I. Komarov © (2010-04-09 16:37) [23]
> Дмитрий (09.04.10 16:26) [22]
"Да как же тебя понять, коли ты ничего не говоришь?" (С)
Что за сервер, что за пакет, откуда он взялся, почему он взялся, ..... ? Дальше продолжеть?
← →
Дмитрий (2010-04-11 03:14) [24]Dennis I. Komarov
И так, напишу по подробней про программу:
программа нужна для авторизации пользователей и дальнейшего запуска основной программы.
Пакет, который должна принять программа, для кодирования данных ( логина и пароля ) . Вот я и прошу вас помощь составить код для принятия этого пакета.
Ну и чтобы моя программа поняла кодировку, этот пакет нужно будет куда нибудь записать ( к примеру в массив ) для его определения.
← →
Германн © (2010-04-11 03:24) [25]
> Дмитрий (11.04.10 03:14) [24]
>
> Dennis I. Komarov
> И так, напишу по подробней про программу:
> программа нужна для авторизации пользователей и дальнейшего
> запуска основной программы.
> Пакет, который должна принять программа, для кодирования
> данных ( логина и пароля ) . Вот я и прошу вас помощь составить
> код для принятия этого пакета.
>
> Ну и чтобы моя программа поняла кодировку, этот пакет нужно
> будет куда нибудь записать ( к примеру в массив ) для его
> определения.
>
Это не объяснение.
Это вольное дилетантское изложение учебной задачи.
← →
Dennis I. Komarov © (2010-04-12 09:02) [26]И так, напишу по подробней про программу:
Ну, давай...
программа нужна для авторизации пользователей и дальнейшего запуска основной программы.
Неожидано, их стало две...
Пакет, что за пакет, полиэтиленовый? который должна принять программа, Которая из...? И почему она должна его принять? для кодирования данных ( логина и пароля )т.е. с помощью этого пакета будем кодировать, так надо понимать?
> Вот я и прошу вас помощь составить код для принятия этого пакета. Увы, он неуловим...
Ну и чтобы моя программа поняла кодировку, этот пакет нужно будет куда нибудь записать ( к примеру в массив ) для его определения.
А это вообще не поддается анализу...
← →
Демо © (2010-04-12 10:52) [27]
> Дмитрий (11.04.10 03:14) [24]
Какой хоть компонент используешь?
← →
Дмитрий (2010-04-19 02:33) [28]Dennis I. Komarov
7 bytes
01 | 07 00 15 0D | 02 D8 00 00 | 00 00 00 00 | 00 00 00 00 .....Ш..........
Вот такую информацию мы должны принять ... Как её записать в массив ?
← →
Дмитрий (2010-04-19 02:34) [29]и как вообще её можно принять ?
← →
brother © (2010-04-19 06:29) [30]где в [28] 7 байт?
← →
Дмитрий (2010-04-20 02:45) [31]Эта информация получена снифером
07 00 15 0D | 02 D8 00
Вот тебе 7 байт
← →
brother © (2010-04-20 04:34) [32]> Вот тебе 7 байт
спасибо, не надо мне этого...
← →
Дмитрий (2010-04-21 17:37) [33]Ну что, есть у кого какие идеи ?
← →
Сергей М. © (2010-04-21 22:23) [34]
> Дмитрий (21.04.10 17:37) [33]
Т.е. тебе по барабану [27] ?
Ну раз так то вот тебе "идея":
BytesRead := recv(hSocket, ptrSomeStaticArray^, 7, 0);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.066 c