Ich benutze die TClientSocket-/TServerSocket-Komponenten. Wie kann ich beim Server die Clients auseinanderhalten?
Wenn Daten beim Server eintreffen, wird das Ereignis 
.OnClientRead ausgelöst. Dabei wird der betroffene Socket direkt als Parameter mit übergeben. Dieser Beispiel-Code sendet den empfangenen Text einfach direkt zurück:
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 
 | procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);var
 Msg: String;
 begin
 Msg := Socket.ReceiveText;
 Socket.SendText(Msg);
 end;
 
 procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
 var
 Msg: String;
 i: Integer;
 begin
 Msg := Socket.ReceiveText;
 for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
 if (Socket = ServerSocket1.Socket.Connections[i]) then
 begin
 ServerSocket1.Socket.Connections[i].SendText(Msg);
 ShowMessage('Nachricht von Client Nr.'+IntToStr(i)+':'+#13+Msg);
 end;
 end;
 | 
		
	  
Der Socket-Parameter ist so gesehen eine Referenz auf den Eintrag im ServerSocket-Array; es ist also nicht unbedingt notwendig, auf die Eigenschaften des ServerSockets zurückzugreifen, man kann auch direkt den übergebenen Socket-Parameter verwenden.
Moderiert von  delfiphan: Beitragsformatierung überarbeitet.
Moderiert von
delfiphan: Beitragsformatierung überarbeitet.
Moderiert von  jasocul: Beitrag geprüft am 08.06.2006
jasocul: Beitrag geprüft am 08.06.2006