Entwickler-Ecke
Internet / Netzwerk - Index von connection herausfinden
opactium - Do 29.11.07 18:38
Titel: Index von connection herausfinden
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:
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:
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
Narses: Delphi-Tags hinzugefügt
Narses - Do 29.11.07 21:21
Titel: Re: Index von connection herausfinden
Moin und :welcome: im Forum!
opactium hat folgendes geschrieben: |
wie bekomme ich jetzt aber den index raus? also wenn jemand connected sieht das so aus:
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 [
http://www.delphi-library.de/topic_54269.html] wird das z.B. so gemacht. ;) Weiterhin kann es sicher nicht schaden, mal
hier einen Blick reinzuwerfen [
http://www.delphi-library.de/topic_Datenpakete+bei+den+SocketKomponenten+auseinanderhalten_56194.html]. :les: :think: ;)
Übertragen auf dein TListView: ein
TListItemhat die Eigenschaft
.Data, dort kannst du z.B. diese Referenz ablegen.
cu
Narses
opactium - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!