Entwickler-Ecke

Internet / Netzwerk - TSocket: Bestimmte Clienten ansenden...FAQ Core klappt nit


g1o2k4 - Mi 04.04.07 02:05
Titel: TSocket: Bestimmte Clienten ansenden...FAQ Core klappt nit
morgen...

es geht um tsocket komponenten, speziell TServerSocket...
habe folgendes gefunden, um dem Clienten zu antworten, der etwas gesendet hat:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
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;


bei der variablen überwachung, bleibt socket die ganze zeit "()", auch wenn ein client etwas sendet und dieser eigentlich zugeordnet werden müsste...wie ordne ich den clienten zu ?


Narses - Mi 04.04.07 02:41

Moin!

user profile icong1o2k4 hat folgendes geschrieben:
habe folgendes gefunden, um dem Clienten zu antworten, der etwas gesendet hat:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
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;

Dieser Code spiegelt das, was der Client gesendet hat (steht auch so in der FAQ); der Code funktioniert ganz sicher. ;)

user profile icong1o2k4 hat folgendes geschrieben:
bei der variablen überwachung, bleibt socket die ganze zeit "()", auch wenn ein client etwas sendet und dieser eigentlich zugeordnet werden müsste...

Vergiss die Variablenüberwachung, bei Optimierung hat die so ihre Probleme... :?

user profile icong1o2k4 hat folgendes geschrieben:
wie ordne ich den clienten zu ?


Delphi-Quelltext
1:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);                    

Das ist der Client, der gesendet hat. Die Schleife ist lediglich dazu da, den Index in das .Connections[]-Array des ServerSockets zu bestimmen; du kannst auch einfach gleich an den entsprechenden Socket senden. ;) (steht aber auch so in der FAQ...)

cu
Narses


g1o2k4 - Mi 04.04.07 10:18

also direkt Socket.Sendtext; oder Socket.Sendbuff(); ?
ohne die entsprechende .Connections[] ?

Edit: schon gut es funzt ! DANKE !!! :dance2: :rofl: :flehan: :zustimm: