Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: 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 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.074 c
2-1266841096
darts116
2010-02-22 15:18
2010.08.27
Рисуем в Delphi


2-1274176208
Petr
2010-05-18 13:50
2010.08.27
Работа с ADO


2-1268142361
Irisss
2010-03-09 16:46
2010.08.27
Как сервер fireBird отключить


15-1268299417
Sergey Masloff
2010-03-11 12:23
2010.08.27
Оффтоп и холивар. Православный крест как символ МИФИ


15-1265078165
Дмитрий С
2010-02-02 05:36
2010.08.27
Подскажите телефон