Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   teamspeak server online benutzer ermitteln (https://www.delphipraxis.net/103359-teamspeak-server-online-benutzer-ermitteln.html)

lbccaleb 14. Nov 2007 18:38


teamspeak server online benutzer ermitteln
 
hy there,

gibt es eine möglichkeit, von einem teamspeak server die momentan angemeldeten benutzer zu ermitteln?? wenn ja wie?? hat da jemand vllt nen kleinen code oder so?? es würde auch schon reichen wenn ich erstmal raus bekomme ob überhaupt noch jemand auf dem server eingeloggt ist oder nicht...

danke für eure hilfe mfg caleb

lbccaleb 15. Nov 2007 18:02

Re: teamspeak server online benutzer ermitteln
 
sorry muss mal pushen... ich komm da echt nicht weiter wie bekomm ich nur ermittelt ob noch welche on sind oder nicht??

Phoenix 15. Nov 2007 18:06

Re: teamspeak server online benutzer ermitteln
 
Es gibt ein PHP Script, das nennt sich TSViewer. Das zeigt alle Channels und die User in den Channels an. Die gleiche Methode die der TS Viewer nutzt kannst Du auch verwenden.

generic 15. Nov 2007 18:06

Re: teamspeak server online benutzer ermitteln
 
hast 2 möglichkeiten
a) über die DLL die beiliegt bei client inkl. Pas-Beispiel
b) über den TCP Managementport - siehe Server Doku

lbccaleb 15. Nov 2007 19:11

Re: teamspeak server online benutzer ermitteln
 
joa danke ich denk mal das wird mir schon weiter helfen...

cyxcyx 16. Nov 2007 16:56

Re: teamspeak server online benutzer ermitteln
 
Sers @ all!

Es wird benötigt:
  • 1x TIdTCPClient
  • 1x TListBox
  • 1x TButton


Delphi-Code + erklärung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  PlayerID, PlayerName: String;
  EOfRead: Boolean;                                                   //End Of Read
  aLine: String;
  I: Integer;
begin
  with IdTCPClient1 do
  begin
    Host := '127.0.0.1';                                              //Server IP-Adresse
    Port := 51234;                                                    //Server TCP-Port
    Connect();                                                        //Verbindung herstellen

    if (Connected) then                                               //Verbindung erfolgreich aufgebaut, dann...
    begin
      aLine := ReadLn;                                                //1. Zeile aus dem Buffer holen
      if not (aLine = '[TS]') then                                    //Wenn die erste Zeile nicht "[TS]" ist dann
      begin
        Disconnect();                                                 //Disconnecten vom Server
        MessageDlg('Kein TeamSpeak 2 Server',                         //Fehler meldung zeigen
                   mtError,[mbOK],0);
        Exit;                                                         //Procedure beenden
      end;

      WriteLn('SEL 8767');                                            //Server auswählen, "SEL " + UDP Port
      aLine := ReadLn;                                                //Zeile aus dem Buffer holen
      if not (aLine = 'OK') then                                      //Wenn Server nicht ausgwählt werden kann, dann...
      begin
        Disconnect();                                                 //Disconnecten vom Server
        MessageDlg('UDP-Port Falsch!',                                //Fehler meldung zeigen
                   mtError,[mbOK],0);
        Exit;                                                         //Procedure beenden
      end;

      WriteLn('PL');                                                  //Player Liste anfordern!
      EOfRead := False;                                               //Ende der Repeat schleife = False
      repeat
        aLine := ReadLn;                                              //Nächste Zeile aus dem Buffer
        if (aLine[1] +
            aLine[2] +
            aLine[3] +
            aLine[4] = 'p_id') then aLine := ReadLn;                  //Wenn die erste Zeile p_id ist dann
                                                                       //MUSS nochmal eine Zeile ausgelesen werden!!

        if (UpperCase(aLine[1] +
                      aLine[2] +
                      aLine[3] +
                      aLine[4] +
                      aLine[5]) = 'ERROR') or (aLine = 'OK') then
                      EOfRead := True                                 // Wenn niemand auf dem Server ist wird direkt nach p_id,
                                                                       //"error" oder "OK" ausgegeben, damit die App nicht abstürzt MUSS dies auch sein!
        else begin
          PlayerID := aLine;                                          //Sollte einleuchtend sein
          Delete(PlayerID,Pos(#9,PlayerID),Length(PlayerID));         //Die "ID" vom rest trennen

          PlayerName := aLine;
          for I := 1 to 3 do Delete(PlayerName,1,Pos('"',PlayerName)); //Dies muss 3x durch geführt werden weil als erstes die IP ausgegeben wird, dann erst der Name!
          Delete(PlayerName,Pos('"',PlayerName),Length(PlayerName));  //Ab dem nächsten " den rest löschen!

          ListBox1.Items.Add(PlayerID + ' ' + PlayerName);            //ID und Name in die ListBox eintragen!
        end;
        Application.ProcessMessages;                                  //Alle nachrichten verarbeiten
      until (EOfRead) or (ReadLnTimedOut);                            //Auf EOfRead = True oder ReadLnTimedOut = True warten
    end;
    Disconnect();                                                     //Verbindung Trennen
  end;
end;
Mit freundlichen Grüßen, Andre

lbccaleb 16. Nov 2007 17:11

Re: teamspeak server online benutzer ermitteln
 
aha, danke dafür, nur was ist tidtcpclient??? wp bekomm ich die komponente her??

mfg

Sharky 16. Nov 2007 17:16

Re: teamspeak server online benutzer ermitteln
 
Zitat:

Zitat von lbccaleb
aha, danke dafür, nur was ist tidtcpclient??? wp bekomm ich die komponente her?? ...

Das ist von den Indys. Wenn Du sie nicht hast solltest Du sie hier bekommen.

lbccaleb 16. Nov 2007 17:32

Re: teamspeak server online benutzer ermitteln
 
ok danke, das hab cih auch hinnbekommen, und wenn ich jetzt aber auf meinen server connecten will, dann kommt eine fehler message mit dem fehlertext:

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EIdSocketError with message 'Socket Error # 10060
Connection timed out.'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


woran könnte es liegen das er keine verbindung zum server auf baut, ich bin mit meinem tsclient auch auf dem server eingeloggt, könnte es daran liegen??

Phoenix 16. Nov 2007 17:43

Re: teamspeak server online benutzer ermitteln
 
Und wo bleibt der Debugger stehen?
Du hast Server-Adresse und Port schon für Deinen TS-Server angepasst, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz