unit Unit3;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls, ExtCtrls, Buttons;
type
TFrameClient =
class(TFrame)
BtnConnect: TSpeedButton;
BtnDisconnect: TSpeedButton;
BtnExit: TSpeedButton;
Bevel1: TBevel;
MemoMessages: TMemo;
EditMessage: TEdit;
BtnSendMessage: TSpeedButton;
EditNickname: TEdit;
Label1: TLabel;
Label2: TLabel;
LblStatus: TLabel;
ClientSocket: TClientSocket;
procedure BtnExitClick(Sender: TObject);
procedure BtnConnectClick(Sender: TObject);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure BtnDisconnectClick(Sender: TObject);
procedure BtnSendMessageClick(Sender: TObject);
procedure ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
uses Unit1;
{$R *.dfm}
{Prüfen auf die Aktivität des Clients und danach Buttons aktivieren/deaktivieren}
procedure set_status;
begin
Form1.FrameClient1.BtnConnect.Enabled :=
not Form1.FrameClient1.ClientSocket.Active;
Form1.FrameClient1.BtnDisconnect.Enabled := Form1.FrameClient1.ClientSocket.Active;
Form1.FrameClient1.BtnSendMessage.Enabled := Form1.FrameClient1.ClientSocket.Active;
Form1.FrameClient1.EditMessage.Enabled := Form1.FrameClient1.ClientSocket.Active;
Form1.FrameClient1.EditNickname.Enabled :=
not Form1.FrameClient1.ClientSocket.Active;
end;
procedure TFrameClient.BtnExitClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TFrameClient.BtnConnectClick(Sender: TObject);
begin
with ClientSocket
do begin
Address := InputBox('
Server IP-Adresse', '
Bitte geben sie die IP-Adresse des Servers ein:', '
');
Port := 5531;
Open;
end;
set_status;
end;
procedure TFrameClient.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
LblStatus.Caption := '
Verbunden';
MemoMessages.Lines.Add('
[' + TimeToStr(now) + '
] Verbindung zu ' + Clientsocket.Address + '
erfolgreich hergestellt');
ClientSocket.Socket.SendText('
[' + TimeToStr(now) + '
] ' + EditNickname.Text + '
betritt den Raum');
set_status;
end;
procedure TFrameClient.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
MemoMessages.Lines.Add(ClientSocket.Socket.ReceiveText);
end;
procedure TFrameClient.BtnDisconnectClick(Sender: TObject);
begin
with ClientSocket
do begin
Close;
end;
MemoMessages.Lines.Add('
Verbindung getrennt');
set_status;
end;
procedure TFrameClient.BtnSendMessageClick(Sender: TObject);
begin
ClientSocket.Socket.SendText('
[' + TimeToStr(now) + '
] ' + EditNickname.Text + '
: ' + EditMessage.Text);
set_status;
end;
procedure TFrameClient.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ClientSocket.Socket.SendText('
[' + TimeToStr(now) + '
] ' + EditNickname.Text + '
hat den Raum verlassen');
end;
end.