Entwickler-Ecke
Internet / Netzwerk - OnClientRead welche Connection
Nokki - So 14.08.05 05:01
Titel: OnClientRead welche Connection
Hallo,
Wenn mehrer Clients zu einem Server verbunden sind, wie kann ich kann ich dann herausfinden von welcher "Connection" das OnClientRead ausgelöst wurde?
Hier erstmal mein Problem :
Wie gesagt sind mehrere Clients zu einem Server verbunden. Wenn bei einem Client die Daten in einer Tabelle hinzugefügt werden, schickt dieser die Daten an den Server mit
client.Socket.sendBuf(srDaten,sizeof(srDaten));, wenn diese bei dem Server ankommen sind, speichert er diese in einer Datei und sendet dann die Daten als Record an die Clients. Auch an den Client wo hinzugefügt wurde. Wenn ich am Server die Daten mit
Server.Socket.ReceiveBuf(clDaten,sizeof(cldaten));entgegennehme, gibt es einen Fehler.Mit
Server.Socket.Connectrions[0].ReceiveBuf(clDaten,sizeof(cldaten));geht alles prima, aber nur wenn Daten in dem CLient hinzugefügt werden den ich als erstes verbunden habe. Bei den anderen Passiert einfach nix...
Danke für eure Hilfe
Moderiert von
raziel: Highlight- durch Delphi-Tags ersetzt.
retnyg - So 14.08.05 05:47
Nokki hat folgendes geschrieben: |
Delphi-Quelltext 1:
| Server.Socket.Connectrions[0].ReceiveBuf(clDaten,sizeof(cldaten)); | |
rate mal für was die null steht...
Narses - So 14.08.05 10:44
Moin und :welcome: im Forum!
In dem Ereignis wird dir doch direkt der passende Socket-Parameter übergeben, nimm einfach den.
cu
Narses
Nokki - So 14.08.05 13:33
Wo wird denn da die Nummer der eigehenden Verbindung übergeben ? Das connections[0] die erste Verbindung ist, ist mir auch klar. Deswegen muss ich ja wissen, von welcher Verbindung aus der OnClientRead am Server ausgelöst wurde...
Narses - So 14.08.05 23:10
Moin!
Die Deklaration des TServerSocket.OnClientRead sieht doch so aus:
Delphi-Quelltext
1:
| procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); |
Das Markierte ist die Clientverbindung. Einfach damit z.B. Socket.SendText() oder sowas machen, fertig. Wenn du die Nummer der Connection im Server-Socket-Array haben willst, einfach Vergleichen und den Index merken.
cu
Narses
Nokki - So 14.08.05 23:29
Alles klar, jetzt hab ichs, danke !!
Marco D. - Do 01.09.05 17:23
Titel: Welche Connection
Tut mir leid aber ich habe immer noch nicht gecheckt wie man jetzt aus socket:tcustwomwinsocket den Index des Clients der gesendet hat rausbekommt :oops: . Könnt ihr das bitte nochmal genauer erklären? :?:
Sinspin - Do 01.09.05 17:56
du hast doch alle clients die beim server gemeldet sind in der liste der connections des serversockets. wenn du nun daten von einem der clients über ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket) bekommst hast du eine verbindung aus der connection liste. nun brauchst du doch bloß alle connections mit deinem socket vergleichen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var l:integer; begin for l:=0 to Server.Socket.ActiveConnections-1 do if Server.Socket.Connections[l]<>socket then begin end; end; |
Marco D. - Fr 02.09.05 15:11
Titel: Socket
Danke!
Hätt ich auch von selbst drauf kommen müssen :autsch::D:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!