Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

отправка пакета ( TcpClient )   Найти похожие ветки 

 
Дмитрий   (2010-03-15 01:33) [0]

Доброго времени суток. Я начинающий ( совсем начинающий ) программист и с одной задачкой зашёл в тупик. Задача такая :
имеется пакет в таком виде
05 00 15 0C 00 00 00 00 00 00 00 00 00 00 00 00
и его нужно отправить на сервер ... Загвоздка у меня в том, что я не могу его как либо преобразовать, некоторые пакеты "в нормальном" виде у меня удалось отправить, а вот с пакетом такого вида проблемма
var
i:Integer;
ip_con:String;
l:String;
begin
ip_con:="***.***.***.***;
for i:=38700 to 38710 do
begin
TcpClient2.RemoteHost:=ip_con;
TcpClient2.RemotePort:=IntToStr(i);
TcpClient2.Open;
if TcpClient2.Connected then
begin
showmessage("ЛяЛяЛяЛя");
TcpClient2.Sendln(??????????????????);

И вот как пакет 05 00 15 0С отправить через TcpClient2.Sendln(); у меня никак не получается.

Буду рад любой помощи )


 
Eraser ©   (2010-03-15 05:15) [1]

в tcp/ip с т.з. пользователя нет никаких пакетов, используй UDP, а лучше, для начала почитай книжку про сети и протоколы.


 
Дмитрий   (2010-03-15 07:30) [2]

Ну а вообще, возможно будет отправить этот пакет ?


 
Сергей М. ©   (2010-03-15 08:26) [3]

Возможно.
И проще всего это сделать в блокирующем режиме работы клиентского сокета.


 
NBAH1990   (2010-03-15 20:06) [4]

Почему не использовать Client\Server-Socket ?


 
RGV ©   (2010-03-19 06:15) [5]

пробуй так:

procedure TForm1.Button1Click(Sender: TObject);
var
 buf:array[0..255] of byte;
 hexStr:string;
 i,j:integer;
 Function HextoDec(s:string):integer;
 const
   h = "123456789ABCDEF";
 begin
   result:=0;
   s:=Uppercase(s);
   result:=pos(s[1],h)*16;
   result:=result+pos(s[2],h);
 end;
begin
 HexStr:=edit1.text;// "0500150C000000000000000000000000"
 j:=0;
 for i:=1 to Length(HexStr) do
   if i mod 2 =1 then
   begin
     buf[j]:=HexToDec(Copy(HexStr,i-1,2));
     inc(j);
   end;
 IdTCPClient1.Host:=HostEdit.text;
 IdTCPClient1.Port:=PortSpinEdit.Value;
 try
   IdTCPClient1.Connect;
   if IdTCPClient1.Connected then
   begin
     IdTCPClient1.WriteBuffer(buf,j);
     IdTCPClient1.Disconnect;
   end;
 except
   on e:Exception do Showmessage(e.Message);
 end;

end;

не проверял но должно работать ;)


 
RGV ©   (2010-03-19 06:22) [6]

сори вот это if i mod 2 =1 then надо переписать на это if i mod 2 =0 then


 
RGV ©   (2010-03-19 06:22) [7]

сори вот это if i mod 2 =1 then надо переписать на это if i mod 2 =0 then


 
Дмитрий   (2010-03-20 04:48) [8]

Ой, ребят, большое спасибо, помогла, правда немного по другому сделал ...

Но возник ещё вопрос, как сделать проверку на отклик сервера ... ?
( ну т.е. я отправил вот этот пакет, и жду пока сервер мне ответит ( пришлёт какой-нибудь пакет), и тогда в ответ, ему следующий пакет )


 
Сергей М. ©   (2010-03-20 18:20) [9]


> Дмитрий   (20.03.10 04:48) [8]


Ты не проникся про режим.
От выбранного режима зависит и решение.


 
Дмитрий   (2010-03-21 04:55) [10]

Не совсем понял про режим



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.261 c
15-1270659190
Smile
2010-04-07 20:53
2010.08.27
Документ Word, его объем (размер) в байтах (килобайтах)?


4-1235150915
Илья_
2009-02-20 20:28
2010.08.27
CreateProcess и ожидание его завершения


15-1265990116
awex
2010-02-12 18:55
2010.08.27
Привет Beeline, или новый развод....


2-1273511164
Andrewtitoff
2010-05-10 21:06
2010.08.27
Как обозначаются бвоичные данные?


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