Autor |
Beitrag |
Nokki
Hält's aus hier
Beiträge: 5
|
Verfasst: So 14.08.05 05:01
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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 14.08.05 05:47
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 14.08.05 10:44
Moin und  im Forum!
In dem Ereignis wird dir doch direkt der passende Socket-Parameter übergeben, nimm einfach den.
cu
Narses
|
|
Nokki 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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 
Hält's aus hier
Beiträge: 5
|
Verfasst: So 14.08.05 23:29
Alles klar, jetzt hab ichs, danke !!
|
|
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: 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  . Könnt ihr das bitte nochmal genauer erklären? 
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 01.09.05 17:43
Moin!
Guckst du hier.
cu
Narses
|
|
Sinspin
      
Beiträge: 1335
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: 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.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Fr 02.09.05 15:11
Titel: Socket
Danke!
Hätt ich auch von selbst drauf kommen müssen   :
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|