Autor Beitrag
Nokki
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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 user profile iconraziel: Highlight- durch Delphi-Tags ersetzt.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: So 14.08.05 05:47 
user profile iconNokki hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
Server.Socket.Connectrions[0].ReceiveBuf(clDaten,sizeof(cldaten));					

rate mal für was die null steht...

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 14.08.05 23:10 
Moin!

Die Deklaration des TServerSocket.OnClientRead sieht doch so aus:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 14.08.05 23:29 
Alles klar, jetzt hab ichs, danke !!
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: 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? :?:

_________________
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 01.09.05 17:43 
Moin!

Guckst du hier.

cu
Narses
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: 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

ausblenden 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
      // mache was du willst mit allen außer dem der gesendet hat 
    end;
end;
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Fr 02.09.05 15:11 
Titel: Socket
Danke!

Hätt ich auch von selbst drauf kommen müssen :autsch::D:

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot