Показать сообщение отдельно
Старый 24.04.2012, 22:06   #113
Новичок
 
Регистрация: 11.04.2012
Сообщений: 3
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Shadrincev пока неопределено
По умолчанию

Приветствую всех, ребят помогите разобраться.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    log: TMemo;
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Client: TClientSocket;
    Edit2: TEdit;
    Edit3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    procedure ClientError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
TByteArray = array of byte;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ByteArrayToHexString(const InArr: array of Byte): string;
var
   tmpStrList: TStringList;
   i: Integer;
begin
   tmpStrList := TStringList.Create;
   try
     for I := Low(InArr) to High(InArr) do
     begin
       tmpStrList.Append(IntToHex(InArr[i], 2));
     end;
     tmpStrList.Delimiter := ' ';
     Result := tmpStrList.DelimitedText;
   finally
     tmpStrList.Free;
   end;
end;

procedure ToLog(log: string);
begin
form1.log.Lines.Add(log);
end;

procedure TForm1.Button1Click(Sender : TObject);
begin
{Если соединение уже установлено - прерываем его.}
  if Client.Active then
  begin
  Client.Active:=False;
  Exit; {...и выходим из обработчика}
  end;
{Присваиваем свойствам Address нужные значения}
  Client.Address:=Edit1.Text;
{Пытаемся открыть сокет и установить соединение}
  Client.Active:=True;
end;

procedure TForm1.Button2Click(Sender : TObject);
 begin
  Client.Active:=False;
 end;

procedure TForm1.ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
Socket.Close;
end;

procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
   len : integer;
   Buffer : TByteArray;
begin
   ToLog('~~~ Подключились ~~~~~~~~~~~~~~~~');
   ToLog('размер пакета ' + IntToStr(Socket.ReceiveLength)+' bytes');
   setLength(Buffer, Socket.ReceiveLength);
   len := Socket.ReceiveBuf(Buffer[0], Socket.ReceiveLength);
   ToLog('Прочитано в буфере: ' + IntToStr(len) + ' bytes');
   ToLog('Ответ сервера: ' + ByteArrayToHexString(Buffer));

end;

end.
Собственно, соединение устанавливаю, ответ получаю, но не могу понять, что делать дальше, и как из полученного первого пакета получить ключ (не пинать я самоучка). Прошу разжуйте пожалуйста, книги читаю гугл и яндекс мучаю, но немогу разобраться...
Shadrincev вне форума   Ответить с цитированием