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.