Einzelnen Beitrag anzeigen

Frage95
(Gast)

n/a Beiträge
 
#4

AW: Delphi XE 2 "Chat" Programm

  Alt 31. Okt 2013, 10:50
Delphi-Quellcode:
Hier ein Codeauszug von meinem Server:

var
  Form1: TForm1;
  UserZahl : Integer;
implementation

{$R *.dfm}



procedure TForm1.FormDestroy(Sender: TObject);
begin
Server.Active := False;
end;

procedure TForm1.ServerClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' verbunden.');
Userzahl:=Userzahl +1;
User.Caption:='User: ' + IntToStr(Userzahl);

end;

procedure TForm1.ServerClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' getrennt.');
Userzahl:=Userzahl -1;
User.Caption:='User: ' + IntToStr(Userzahl);

end;

procedure TForm1.ServerClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + 'hat den Fehler: ' + inttostr(Errorcode));
Userzahl:=Userzahl -1;
User.Caption:='User: ' + IntToStr(Userzahl);
end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var i:integer;
Nachricht:AnsiString;
begin
Nachricht:=Socket.RemoteAddress + ': ' + Socket.ReceiveText;
Memo1.Lines.Add(Nachricht);

for i := 0 to Server.Socket.ActiveConnections -1 do
  Server.Socket.Connections[i].SendText(Nachricht);

end;


procedure TForm1.BtnAnhaltenClick(Sender: TObject);
begin
Server.Port := strtoint (Port.Text);
Server.Active := False;

BtnStarten.Enabled := True;
BtnAnhalten.Enabled := False;

Memo1.Lines.Add('Status: Server angehalten.');
end;

procedure TForm1.BtnClearClick(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Server 1.0');
end;

procedure TForm1.BtnSendenClick(Sender: TObject);
var i:Integer;
begin
for i := 0 to Server.Socket.ActiveConnections -1 do
   Server.Socket.Connections[i].SendText('Nachricht vom Server: ' + EdSenden.Text);
  Memo1.Lines.Add('Nachricht vom Server: ' + EdSenden.Text);
  EdSenden.Clear;
end;

procedure TForm1.BtnStartenClick(Sender: TObject);
begin
Server.Port := strtoint (Port.Text);
Server.Active := True;

BtnStarten.Enabled := False;
BtnAnhalten.Enabled := True;

Memo1.Lines.Add('Status: Server gestartet.');
end;


end.

Und dass hier ist mein Client:


var
  Form1: TForm1;
  UserZahl : Integer;
implementation

{$R *.dfm}



procedure TForm1.FormDestroy(Sender: TObject);
begin
Server.Active := False;
end;

procedure TForm1.ServerClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' verbunden.');
Userzahl:=Userzahl +1;
User.Caption:='User: ' + IntToStr(Userzahl);

end;

procedure TForm1.ServerClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' getrennt.');
Userzahl:=Userzahl -1;
User.Caption:='User: ' + IntToStr(Userzahl);

end;

procedure TForm1.ServerClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + 'hat den Fehler: ' + inttostr(Errorcode));
Userzahl:=Userzahl -1;
User.Caption:='User: ' + IntToStr(Userzahl);
end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var i:integer;
Nachricht:AnsiString;
begin
Nachricht:=Socket.RemoteAddress + ': ' + Socket.ReceiveText;
Memo1.Lines.Add(Nachricht);

for i := 0 to Server.Socket.ActiveConnections -1 do
  Server.Socket.Connections[i].SendText(Nachricht);

end;


procedure TForm1.BtnAnhaltenClick(Sender: TObject);
begin
Server.Port := strtoint (Port.Text);
Server.Active := False;

BtnStarten.Enabled := True;
BtnAnhalten.Enabled := False;

Memo1.Lines.Add('Status: Server angehalten.');
end;

procedure TForm1.BtnClearClick(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Server 1.0');
end;

procedure TForm1.BtnSendenClick(Sender: TObject);
var i:Integer;
begin
for i := 0 to Server.Socket.ActiveConnections -1 do
   Server.Socket.Connections[i].SendText('Nachricht vom Server: ' + EdSenden.Text);
  Memo1.Lines.Add('Nachricht vom Server: ' + EdSenden.Text);
  EdSenden.Clear;
end;

procedure TForm1.BtnStartenClick(Sender: TObject);
begin
Server.Port := strtoint (Port.Text);
Server.Active := True;

BtnStarten.Enabled := False;
BtnAnhalten.Enabled := True;

Memo1.Lines.Add('Status: Server gestartet.');
end;


end.
Ja die Firewall habe ich schon überprüft und die Ports sind die selben.

Geändert von Frage95 (31. Okt 2013 um 10:53 Uhr)
  Mit Zitat antworten Zitat