pascalabcnet/bin/Lib/ClientServer.pas
2016-01-06 02:03:10 +03:00

91 lines
1.9 KiB
ObjectPascal

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();
br.Close();
data := OnProcessCommand(data);
var bw := new BinaryWriter(stream);
bw.Write(data);
bw.Close();
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.Close();
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.Close();
var br := new BinaryReader(stream);
Result := br.ReadString();
br.Close();
stream.Close();
client.Close();
end;
begin
end.