unit Sockets;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ScktComp;
type
THauptformular = class(TForm)
ClientSocket: TClientSocket;
ServerSocket: TServerSocket;
Server: TButton;
Client: TButton;
ServerDicht: TButton;
ClientDicht: TButton;
ClientText: TEdit;
ServerText: TEdit;
Senden: TButton;
procedure ServerClick(Sender: TObject);
procedure ClientClick(Sender: TObject);
procedure ServerDichtClick(Sender: TObject);
procedure ClientDichtClick(Sender: TObject);
procedure SendenClick(Sender: TObject);
procedure ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private-Deklarationen}
public
{ Public-Deklarationen}
end;
var
Hauptformular: THauptformular;
implementation
{$R *.DFM}
Function Quersumme(X:integer):Integer;
begin
if X <= 9 then
Quersumme := X
else
Quersumme := Quersumme(X div 10) + X mod 10
end;
procedure THauptformular.ServerClick(Sender: TObject);
begin
Serversocket.Active := true;
Hauptformular.Caption := 'Server';
Server.Enabled := false;
Client.Enabled := false;
ServerDicht.Enabled := true;
end;
procedure THauptformular.ClientClick(Sender: TObject);
begin
Clientsocket.Active := true;
end;
procedure THauptformular.ServerDichtClick(Sender: TObject);
begin
Close;
end;
procedure THauptformular.ClientDichtClick(Sender: TObject);
begin
Close
end;
procedure THauptformular.SendenClick(Sender: TObject);
begin
ClientSocket.Socket.Sendtext(ClientText.Text)
end;
procedure THauptformular.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var I,P: Integer; S: String;
begin
ClientText.Text := Socket.ReceiveText;
ShowMessage('SERVER - Auftrag erhalten');
Val(ClientText.Text,I,P);
if (P=0) and (I>0) then begin
Str(Quersumme(I),S);
ServerText.Text := S
end else
ServerText.Text := 'Antwort: '+ClientText.Text;
Socket.SendText(ServerText.Text);
end;
procedure THauptformular.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
ServerText.Text := Socket.ReceiveText;
end;
procedure THauptformular.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage('SERVER - Client angeschlossen');
end;
procedure THauptformular.ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage('SERVER - Client hat mich verlassen');
end;
procedure THauptformular.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Hauptformular.Caption := 'Client';
Client.enabled := false;
Server.enabled := false;
Clientdicht.enabled := true;
Senden.enabled := true;
end;
end.