Delphi-PRAXiS

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?

lbccaleb 16. Nov 2007 17:45

Re: teamspeak server online benutzer ermitteln
 
Zitat:

Zitat von Phoenix
Und wo bleibt der Debugger stehen?
Du hast Server-Adresse und Port schon für Deinen TS-Server angepasst, oder?

naja er bleibt halt bei connect stehen, und klar die ip und den port hab ich schon auf meinen angepasst, das hätt ich mir dann auch noch gedacht, hehe ;-)

Phoenix 16. Nov 2007 17:48

Re: teamspeak server online benutzer ermitteln
 
Das ist aber schon der Management-Port des TS-Servers, gelle? Nicht den normalen Port für den TS-Client benutzen.

lbccaleb 16. Nov 2007 17:48

Re: teamspeak server online benutzer ermitteln
 
ok und mit ausgeschalteter firewall hab ich es dann auch mal probiert, aber auch das selbe, er brauch beim verbinden ne ganze weile und dann kommt das mit zeit überschritten...

lbccaleb 16. Nov 2007 17:50

Re: teamspeak server online benutzer ermitteln
 
also ich hab im ts client ja rechts das fenster (mit "server" und "server ip") und da hab ich die daten übernommen sind diese richtig??

Phoenix 16. Nov 2007 17:54

Re: teamspeak server online benutzer ermitteln
 
Nein. Das ist der Port für die Voice-Clients.
Der TS-Server hört aber auf zwei (eigentlich 3) Ports:
1.) Web-Management Port
2.) Telnet - Management-Port
3.) Voice-Port.

Für den normalen TS-Client ist nur der Voice-Port wichtig. Der Web-Management Port ist wichtig, wenn man so Sachen wie Berechtigungen der User verwalten will.

Wichtig für diese Abfragen die Du machen willst ist der Telnet-Management Port. Der steht in der Regel in der Server-Config.

Nachtrag zum Testen:
Guck Dir mal diese Seite hier an:
http://docs.teamspeak-einstieg.de/telnet/default.htm

Dort wird genau das beschrieben, was der Code macht. Also probiers mit Putty erstmal von Hand - wenn das klappt, dann kannst Du das Programm darauf ansetzen.

cyxcyx 16. Nov 2007 19:25

Re: teamspeak server online benutzer ermitteln
 
1. Um an die Player List zu kommen brauch mal keinen Web-Manager Port, den brauch mal nur um aufs Admin-Web-Interface zu zugreifen!

2. Google, wenn ich dir schon den Komponente Name schreib, kannst du auch in Google suche was das ist, wie man es benutzt, wie du es installieren kannst, wo du es Downloaden kannst!

- Mach den Crash-Kurs und Google dir Grundwiessen!

Mit freundlich Grüßen, Andre

Sergej 16. Nov 2007 20:33

Re: teamspeak server online benutzer ermitteln
 
Zitat:

Zitat von cyxcyx
1. Um an die Player List zu kommen brauch mal keinen Web-Manager Port, den brauch mal nur um aufs Admin-Web-Interface zu zugreifen!

Naja, du hast selbst den Telnet-Management-Port gepostet, also überdenk deine Aussage vielleicht noch mal...

Zitat:

Zitat von cyxcyx
2. Google, wenn ich dir schon den Komponente Name schreib, kannst du auch in Google suche was das ist, wie man es benutzt, wie du es installieren kannst, wo du es Downloaden kannst!

- Mach den Crash-Kurs und Google dir Grundwiessen!

Mit freundlich Grüßen, Andre

Google dir bitte mal ein wenig Grundwissen der deutschen Grammatik/Rechtschreibung ;-)

cyxcyx 16. Nov 2007 20:36

Re: teamspeak server online benutzer ermitteln
 
1. Ich glaube du kennst die Differenz zwischen TCP-Port und HTTP-Port!
2. Da gebe ich dir gerne Recht! Die Rechtschreibung ist wirklich nicht mein Ding! :gruebel:

Sergej 16. Nov 2007 21:24

Re: teamspeak server online benutzer ermitteln
 
Zitat:

Zitat von cyxcyx
1. Ich glaube du kennst die Differenz zwischen TCP-Port und HTTP-Port!

Ich weiß nicht was du mir damit sagen willst. :gruebel:

cyxcyx 16. Nov 2007 23:42

Re: teamspeak server online benutzer ermitteln
 
Ich meine damit, dass der TCP-Port dafür da ist, um eine Verbindung über Telnet auf zubauen,
und der HTTP-Port für das Web-Interface da ist.

Progman 16. Nov 2007 23:47

Re: teamspeak server online benutzer ermitteln
 
Es gibt kein "TCP-Port", TCP ist ein Protokoll, es sind nur Ports definiert, bei denen man sich per TCP-Protokoll anmelden kann.

Sergej 16. Nov 2007 23:49

Re: teamspeak server online benutzer ermitteln
 
Zitat:

Zitat von cyxcyx
Ich meine damit, dass der TCP-Port dafür da ist, um eine Verbindung über Telnet auf zubauen,
und der HTTP-Port für das Web-Interface da ist.

Und wo ist jetzt die Relevanz für das Thema? :gruebel:

Phoenix hat nur gesagt, dass lbccaleb den Telnet-Management-Port braucht, mehr nicht.

cyxcyx 17. Nov 2007 02:37

Re: teamspeak server online benutzer ermitteln
 
Lassen wirs^^... Zurück zum Thema... :wink:

lbccaleb 17. Nov 2007 12:35

Re: teamspeak server online benutzer ermitteln
 
denn ich hab von solch telnet dingen null schimmer, ich fux mich da schon rein so ist nicht, aber das sit normalerweise nicht die art anwendungen die ich normal programmiere, nun hab ich aber immer noch das problem mit dem zugriff auf den server, ich bekomm keine verbindung her gestellt, denke mal das liegt an der falschen ip, hab auch alles berücksichtigt was bis her geschrieben wurde, nur seh ich da noch nicht so recht durch... :wall: :wall: :wall: aber sonnst denk ich mal hab ich alles, und mein testprog scheint ja auch zu laufen....

mfg

Phoenix 17. Nov 2007 12:53

Re: teamspeak server online benutzer ermitteln
 
Hrm? Wieso sollte die IP nicht stimmen? Wenn der TS-Client auf diese IP verbinden kann, dann ist es die richtige.

Ich gehe nur jede Wette ein, Du weisst nicht, welcher Port für die Konfiguration des TS-Servers (via Telnet-Protokoll) verwendet wird. Die kann Dir der TS-Admin sagen.

Progman 17. Nov 2007 12:57

Re: teamspeak server online benutzer ermitteln
 
Der standardmäßige Telnet-Port ist 23, aber der Server-Admin kann als Portnummer jede unterhalb von 1024 bestimmen. Da hilft wohl nur fragen ;)

Phoenix 17. Nov 2007 13:02

Re: teamspeak server online benutzer ermitteln
 
Erst lesen, dann Posten.

1.) Teamspeak benutzt zur Administration zwar das Telnet-Protokoll, es ist aber keine Verbindung zu einem Telnet Dienst. Deswegen stimmt Port 23 schonmal gar nicht.

2.) Die Ports unter 1024 sind priviligierte Ports und können nur von Prozessen mit Root-Rechten erlangt werden. Teamspeak sollte tunlichst nicht als Root laufen, hier sind also im Prinzip genau alle Ports ausser denen < 1024 gefragt. Standard Port ist für den TS-Telnet zugang übrigens '51234'. Ist aber schon in den Moment hinfällig, wenn es auf dem Rechner mehr als einen TS-Server gibt - dann hat logischerweise jeder seinen eigenen Port.

lbccaleb 17. Nov 2007 13:24

Re: teamspeak server online benutzer ermitteln
 
mhh ich bin selber admin ;-) dumme an der geschichte ist nur, der server steht 350km weit von mir wech, und ich kann dort vor nächstes we nicht mehr rauf, und laufen tut der auch schon ewigkeiten, keine ahnung mehr was ich damals als prot da eingestellt hab, naja da hilft wohl nichts anderes als abwarten bis ich wieder zu hause bin und dann nachsehen .. ;-) aber auf jedenfall danke an allen beteiligten für die hilfe...

mfg

Phoenix 17. Nov 2007 13:27

Re: teamspeak server online benutzer ermitteln
 
Wenn Du den Web-Admin-Port noch kennst, dann kannst Du da (glaub ich) nachgucken.
Ansonsten versuchs mal mit dem Standard-Port - wenn Du den selber eingerichtet hast und nix geändert hast, dann wird das wahrscheinlich noch der Standardport sein.

lbccaleb 17. Nov 2007 13:48

Re: teamspeak server online benutzer ermitteln
 
hab ich schon probiert, also der standartport war ja 51234?? oder 8767?? also die beiden hab ich auf jeden fall ausprobiert und mit denen ging es nicht...

cyxcyx 17. Nov 2007 14:40

Re: teamspeak server online benutzer ermitteln
 
Bei TeamSpeak sind die Standart Ports:

TCP-Query-Port: 51234
Virtueller-Server: 8767
HTTP-Port: 14534

Denn HTTP-Port brauch man in diesem fall aber nicht.
Hier hab ich noch ein Tutorial gefunden!
Planet-TeamSpeak

Mit freundlichen Grüßen, Andre


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.

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