unit Client_Server;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ScktComp, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ServerSocket: TServerSocket;
[...]
procedure ConnectClick(Sender: TObject);
procedure DisconnectClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Events.Lines.Add('Client Connectet');
Clients.Text := IntToStr(StrToInt(Clients.Text)+1);
end;
procedure TForm1.ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Events.Lines.Add('Client Disconnected');
Clients.Text := IntToStr(StrToInt(Clients.Text)-1);
end;
procedure TForm1.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var fsWork : TFileStream;
sIncome : String;
begin
// Anfrage von Client annehmen
sIncome := Socket.ReceiveText;
if sIncome='GetFile' then begin
// Datei in Stream laden
fsWork := TFileStream.Create('datei\bindif.exe', fmOpenRead);
fsWork.Seek(0, soFromBeginning);
// Stream als Antwort an Client senden
if Socket.SendStream(fsWork) then begin
Events.Lines.Add('Datei wurde erfolgreich an Client übertragen');
end else
Events.Lines.Add('Ein Fehler ist aufgetreten, die Datei konnte nicht gesendet werden');
end
else begin
Events.Lines.Add(sIncome);
end;
end;
procedure TForm1.ConnectClick(Sender: TObject);
begin
ServerSocket.Port := StrToInt(Port.Text); //Festlegung des Ports
ServerSocket.active := true; //Aktivierung der ServerSocket
Events.Lines.Add('Server connected on Port ' + Port.Text);
PageControl.ActivePage := TabSheet1;
end;
procedure TForm1.DisconnectClick(Sender: TObject);
begin
ServerSocket.active:=false;
Events.Lines.Add('Server disconnected');
Clients.Text := '0';
end;
end.