Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 24.04.2012, 22:06   #1
Новичок
 
Регистрация: 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 вне форума   Ответить с цитированием
Старый 26.04.2012, 10:46   #2
Пользователь
 
Аватар для Silent
 
Регистрация: 07.02.2011
Сообщений: 32
Сказал Спасибо: 8
Имеет 4 спасибок в 4 сообщенях
Silent пока неопределено
По умолчанию

Shadrincev, посмотри готовые примеры la2_client_emu и тут http://coderx.ru/showthread.php?t=9575
Silent вне форума   Ответить с цитированием
Старый 30.04.2012, 08:19   #3
Новичок
 
Регистрация: 11.04.2012
Сообщений: 3
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Shadrincev пока неопределено
По умолчанию

Цитата:
Сообщение от Silent Посмотреть сообщение
Shadrincev, посмотри готовые примеры la2_client_emu и тут http://coderx.ru/showthread.php?t=9575
смотрел, в la2_client_emu я не увидел прием первого пакета, там ключ уже прописан вроде как. А xBot2010 не смог собрать знаний нехватает...


Цитата:
Сообщение от Yegor Посмотреть сообщение
ByteArrayToHexString - это нужно только для вывода на экран/лог, для работы с пакетом это преобразование делать не нужно, работай на прямую с буфером.
не могу понять как на прямую....
Shadrincev вне форума   Ответить с цитированием
Старый 30.04.2012, 12:01   #4
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Shadrincev, Buffer[index] епт
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 30.04.2012, 12:30   #5
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 63
Сказал Спасибо: 6
Имеет 21 спасибок в 19 сообщенях
Demion пока неопределено
По умолчанию

Shadrincev, может быть это не мое дело, но не советую писать эмулятор клиента, если вы не имеете представления о массиве байтов и как с ним работать (основы основ)
Demion вне форума   Ответить с цитированием
Старый 01.05.2012, 10:22   #6
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Demion, ничего это хороший повод изучить и закрепить изученное. Я сам так делаю обычно. Ставлю цель и начинаю изучать материал для достижения цели. Написание бота очень хорошая практика для начинающего программиста.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 25.04.2012, 00:22   #7
Местный
 
Регистрация: 27.01.2009
Сообщений: 154
Сказал Спасибо: 23
Имеет 26 спасибок в 19 сообщенях
guplen пока неопределено
По умолчанию

Читай статью с самого начала))
guplen вне форума   Ответить с цитированием
Старый 25.04.2012, 15:42   #8
Новичок
 
Регистрация: 11.04.2012
Сообщений: 3
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Shadrincev пока неопределено
По умолчанию

Цитата:
Сообщение от guplen Посмотреть сообщение
Читай статью с самого начала))
Читал на раза 4-е.
Собственно, загвоздка в том, что пакеты постоянно преобразовывать через function ByteArrayToHexString? и на основе преобразованного пакета уже if else? или же напрямую через Buffer?
Shadrincev вне форума   Ответить с цитированием
Старый 25.04.2012, 18:39   #9
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

ByteArrayToHexString - это нужно только для вывода на экран/лог, для работы с пакетом это преобразование делать не нужно, работай на прямую с буфером.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:15.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!