Вниз
Скачать: CL | DM;

обработка пакета сервера   Найти похожие ветки 

← →
Дмитрий   (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 вся ветка

Скачать: CL | DM;



Память: 0.53 MB
Время: 0.045 c
2-1271183717
dixa
2010-04-13 22:35
2010.08.27
подстановка значения в созданный тип


15-1269519396
Аноним
2010-03-25 15:16
2010.08.27
Кто там хотел уменьшить размер exe?


15-1271655350
Валерий М.
2010-04-19 09:35
2010.08.27
Принтер и логи


2-1273230896
romario
2010-05-07 15:14
2010.08.27
Не работает функция trim


15-1274208004
xayam
2010-05-18 22:40
2010.08.27
Игровой сервер




   Наверх