Entwickler-Ecke

Internet / Netzwerk - NBFPAServer Protokoll an EINEN Client senden (no broadcast?)


Nowo - Sa 05.04.08 21:38
Titel: NBFPAServer Protokoll an EINEN Client senden (no broadcast?)
Hey kann mir jemand helfen ? :(

Konkrete frage:

Wie kann ich mit dem NBFPAServer ein Protokoll an einen bestimmten Client senden ?
Beim NBFPAClient geht das so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
...
  var 
    Cmd: TCmdSeq;
begin
  Cmd := TCmdSeq.Create(CMD_USERDATA);
  Cmd.Add(EditInfo1.Text);
  Cmd.Add(EditInfo2.Text);
  Cmd.Add(EditInfo3.Text);
  NBFPAClient1.Outbound.AddCmdAndFree(Cmd);
  NBFPAClient1.Send; // <- Senden
end;


Bei dem Server finde ich aber nur die funktion Broadcast, also an alle senden.
Wenn ich dann die methode mit "connections[1].sendtext(cmd) versuchte gehts das aufgrund
der CmdSeq nicht... da ich ja keinen text sende.


Wie kann ich mit dem NBFPAServer ein Protokoll an einen bestimmten Client senden ?

Vielen Dank
Nowo


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 17.04.2008 um 15:28


Nowo - Mo 07.04.08 17:40

Das darf doch nicht so schwer sein...
habs auch schon manuel versucht:


Delphi-Quelltext
1:
     FormMain.Server.Socket.Connections[0].SendText('CMD_INFO'+#13+'Heyho'+#13);                    


aber klar das der server das nicht als CMD sequenz lesen kann...


Please please please i need help :cry:


Narses - Do 17.04.08 15:28
Titel: Re: NBFPAServer Protokoll an EINEN Client senden (no broadcast?)
Moin!

user profile iconNowo hat folgendes geschrieben:
Wie kann ich mit dem NBFPAServer ein Protokoll an einen bestimmten Client senden ?
Btw: du sendest kein "Protokoll", sondern eine "Kommandosequenz". :idea: ;)

TNBFPA-Doku, Seite 13 hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
// Neuer Client: bisherige Benutzerliste an den Neuen senden
procedure TServerMain.NBFPAServer1ClientConnect(Sender: TObject;
  PA: TProtocolAdapter);
  var
    Cmd: TCmdSeq;
    i: Integer;
begin
  // alle Verbindungen des Servers durchgehen...
  for i := 0 to NBFPAServer1.Connections.Count-1 do
    // ist die betrachtete Verbindung (i) die Neue?
    if (NBFPAServer1.ConnectionByIndex[i] <> PA) then begin // nein, dann...
      Cmd := TCmdSeq.Create(CMD_USERDATA); // Details der Verbindung einsammeln
      Cmd.Add(NBFPAServer1.ConnectionByIndex[i].SessionID);
      Cmd.Add(NBFPAServer1.ConnectionByIndex[i].SessionName);
      PA.Outbound.AddCmdAndFree(Cmd); // und dem neuen Client mitteilen
    end;
  // .Send ist nicht notwendig, weil kurz nach dem OnConnect eh ein OnSession-
  // NameChange-Ereignis eintritt, in dem auch an den neuen Client gesendet wird.
end;
Zugegeben, hier wird der nötige Code nicht direkt wörtlich gezeigt, aber das Prinzip sollte daraus schon hervorgehen:

Delphi-Quelltext
1:
2:
NBFPAServer1.ConnectionByIndex[i].Outbound.AddCmdAndFree(Cmd);
NBFPAServer1.ConnectionByIndex[i].Send;
sendet an Verbindung i die Sequenz cmd.

cu
Narses


Nowo - Do 17.04.08 19:35

Vielen dank =)
Habs grade als gelöst markiert !

(willkommen zurück aus dem urlaub)