pascalabcnet/bin/Lib/ClientServer.pas
Ivan Novikov 67a13baf12
Fix encoding in ClientServer.pas
Change encoding from cp1252 to make comments readable.
2019-10-08 17:17:18 +03:00

92 lines
2.3 KiB
ObjectPascal

// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
unit ClientServer;
uses System.Net, System.Net.Sockets, System.IO;
var
servername := '127.0.0.1';
port := 13000;
/// Запускает сервер, принимающий от клиента строку и выполняющий указанное действие
procedure RunServer(OnProcessCommand: string -> ());
begin
var server := new TcpListener(IPAddress.Any, port);
server.Start();
while (true) do
begin
var client := server.AcceptTcpClient();
var stream := client.GetStream();
var br := new BinaryReader(stream);
var data := br.ReadString();
br.Close();
stream.Close();
client.Close();
OnProcessCommand(data);
end;
end;
/// Запускает сервер, принимающий от клиента строку, выполняющий указанное действие и отправляющий строку в ответ
procedure RunServer(OnProcessCommand: string -> string);
begin
var server := new TcpListener(IPAddress.Any, port);
server.Start();
while (true) do
begin
var client := server.AcceptTcpClient();
var stream := client.GetStream();
var br := new BinaryReader(stream);
var data := br.ReadString();
data := OnProcessCommand(data);
var bw := new BinaryWriter(stream);
bw.Write(data);
bw.Flush();
stream.Close();
client.Close();
end;
end;
/// Вызывается Клиентом для отправки команды Серверу
procedure SendCommand(s: string);
begin
var client := new TcpClient(servername,port);
var stream := client.GetStream();
var bw := new BinaryWriter(stream);
bw.Write(s);
bw.Flush();
stream.Close();
client.Close();
end;
/// Вызывается Клиентом для отправки команды Серверу и получения ответа
function SendCommandAndReceiveAnswer(s: string): string;
begin
var client := new TcpClient(servername,port);
var stream := client.GetStream();
var bw := new BinaryWriter(stream);
bw.Write(s);
bw.Flush();
var br := new BinaryReader(stream);
Result := br.ReadString();
stream.Close();
client.Close();
end;
begin
end.