Autor Beitrag
opactium
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 29.11.07 18:38 
hallo zusammen

also ich habe einen clienten, und einen server. wenn jemand jetzt mit dem clienten zu mir connected, wird er beim server in ein listview eingetragen.
ich will jetzt dann aber auch etwas zu dem clienten senden koennen.
das mache ich ja mit:

ausblenden Delphi-Quelltext
1:
ServerSocket1.Socket.Connections[index].SendText('hallo');					


wie bekomme ich jetzt aber den index raus? also wenn jemand connected sieht das so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Tfrmmain.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
ListView1.Items.Add;
ListView1.Items.Item[ListView1.Items.Count-1].Caption := socket.RemoteAddress;
ListView1.items.item[ListView1.items.count -1].SubItems.Add(inttostr(frmmain.ServerSocket1.Socket.ActiveConnections-1));
end;


wie man sieht mache ich das ziemlich umstaendlich mit dem index, aber es funktioniert. jetzt aber beim disconnect des clients kann ich den index ja nicht so herausfinden. wie krieg ich ihn da heraus??

ThX

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 29.11.07 21:21 
Moin und :welcome: im Forum!

user profile iconopactium hat folgendes geschrieben:
wie bekomme ich jetzt aber den index raus? also wenn jemand connected sieht das so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Tfrmmain.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
ListView1.Items.Add;
ListView1.Items.Item[ListView1.Items.Count-1].Caption := socket.RemoteAddress;
ListView1.items.item[ListView1.items.count -1].SubItems.Add(inttostr(frmmain.ServerSocket1.Socket.ActiveConnections-1));
end;

wie man sieht mache ich das ziemlich umstaendlich mit dem index, aber es funktioniert. jetzt aber beim disconnect des clients kann ich den index ja nicht so herausfinden. wie krieg ich ihn da heraus?
Es ist nicht besonders "schlau", den Index einer Verbindung im .Connections[]-Array des TServerSocketals Kennung zu verwenden. :? Das Problem ist nämlich, dass sich dieser auch ändern kann (und wird, wie du bereits beim Disconnect festgestellt hast). :|

Eine Lösung besteht darin, die Referenz auf den TCustumWinSocketals Kennung zu verwenden, denn dieses Objekt ist für eine bestimmte Verbindung garantiert immer gleich. :idea: In diesem Tutorial wird das z.B. so gemacht. ;) Weiterhin kann es sicher nicht schaden, mal hier einen Blick reinzuwerfen. :les: :think: ;)

Übertragen auf dein TListView: ein TListItemhat die Eigenschaft .Data, dort kannst du z.B. diese Referenz ablegen.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
opactium Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Fr 30.11.07 10:06 
Ok danke. Ich habe mir das Tutorial schon mal angeschaut. Aber ich habe ziemlich früh dann aufgehört zu lesen. Ich habe auch schon in VB6 gecodet, und da gabs kein solches tut. Da war es für mich einfach logisch, dass man so die packete auseinanderhält. :D

werde mich aber heute abend nocheinmal mit dem TUT beschäftigen, damit ich auch noch das mit den Indexen kapier.

MfG