Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.53 MB
Время: 0.062 c
15-1266565974
balepa
2010-02-19 10:52
2010.08.27
C#. Объявление типов


2-1273835444
Крапивин Олег
2010-05-14 15:10
2010.08.27
Как вывести дату-время в Chart?


2-1273738117
9x3bk
2010-05-13 12:08
2010.08.27
Работа с совмещением картинок


2-1267430734
D1987
2010-03-01 11:05
2010.08.27
цветные символы


15-1272141003
Юрий
2010-04-25 00:30
2010.08.27
С днем рождения ! 25 апреля 2010 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский