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.