This repository has been archived on 2024-12-25. You can view files and clone it, but cannot push or open issues or pull requests.

74 lines
1.8 KiB
ObjectPascal

uses System, System.Net, System.Net.Sockets, System.Threading, crt;
type
TByteArray = array of byte;
var
client: TCPClient;
s_str: NetworkStream;
s_raw: TByteArray;
s_ip, cl_str, cl_stro, name: string;
s_port, length: integer;
thr_s, thr_r: Thread;
procedure send;
begin
while true do
begin
readln(cl_str);
s_str.Write(System.Text.Encoding.Default.GetBytes(cl_str), 0, cl_str.Length);
end;
end;
procedure read;
begin
while true do
begin
length := s_str.Read(s_raw, 0, s_raw.Length);
cl_stro := System.Text.Encoding.Default.GetString(s_raw, 0, length);
writeln(cl_stro);
end;
end;
begin
s_raw := TByteArray(System.Array.CreateInstance(typeof(byte), 1024));
try
textcolor(14);
write('Введите IP: ');
readln(s_ip);
write('Введите порт: ');
readln(s_port);
except
textcolor(4);
writeln('Какая-то ошибка... Закрываем приложение.');
sleep(2500);
exit;
end;
textcolor(2);
try
client := TCPClient.Create;
client.Connect(ipAddress.Parse(s_ip), s_port);
if client.Connected = true then
begin
write('Введите имя: '); readln(name);
s_str := client.GetStream;
s_str.Write(System.Text.Encoding.Default.GetBytes(name), 0, name.Length);
writeln('Подключено к ', s_ip);
length := s_str.Read(s_raw, 0, s_raw.Length);
cl_str := System.Text.Encoding.Default.GetString(s_raw, 0, length);
writeln(cl_str);
thr_s := new Thread(send);
thr_s.Start;
thr_r := new Thread(read);
thr_r.Start;
end;
except
if client.Connected = false then
begin
textcolor(4);
writeln('Подключение не удалось. Выход...');
sleep(2500);
exit;
end;
end;
end.