Я создаю прокси-клиент, используя 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, и я не знаю операции с байтами в паскале, помогите, пожалуйста, понятьпроблема кода выше.