Как отправлять и получать данные при использовании Indy10? - PullRequest
0 голосов
/ 27 сентября 2018

Я создаю прокси-клиент, используя SOCKS5, в rfc1928 , я должен отправить сообщение о подключении к серверу, а сервер вернул мне сообщение:

           client send to server:

           +----+----------+----------+
           |VER | NMETHODS | METHODS  |
           +----+----------+----------+
           | 1  |    1     | 1 to 255 |
           +----+----------+----------+

           and then server should return message following:

           +----+--------+
           |VER | METHOD |
           +----+--------+
           | 1  |   1    |
           +----+--------+

мой код ниже:

procedure TForm1.ConnectClick(Sender: TObject);
var
  RecvBuff: TBytes;
  fSize: Int64;
begin
  with TcpClient do
  begin
    Connect;
    // send \x01\x01\x05 to SOCKS5 server
    IOHandler.WriteLn('#01#01#05');
    fSize := IOHandler.ReadInt64;

    IOHandler.ReadBytes(RecvBuff, fSize);
    // Check server response is \x01\x01
    if (TBytes[0] = byte('#01')) and (TBytes[1] = byte('#01')) then
    begin
      ShowMessage('Server responsed!');
    end;

  end;
end;   

Я новичок в паскале, я не могу скомпилировать этот код в Lazarus, я не могу найти демонстрационную программу для выполнения операции Indy TCP, и я не знаю операции с байтами в паскале, помогите, пожалуйста, понятьпроблема кода выше.

...