Hallo Leute,
ich habe ein kleines Problem,
nun ich habe versucht eine Verbindung über einen TCP Socket auf den Query-Port auf unserem Teamspeak zu verbinden um daraus die Aktuelle Online-Anzahl der Leute und die Maximalanzahl raus zu bekommen.
Nunja, die 1. Ausgabe sieht dermassen aus:
und die 2. jeweils:
was allerdings auch richtig ist, sobald ich nun ein 'help' übergebe, dann gibt er mir absolut nicht aus.
Der Code nochmals:
Ich habe erstmal alles in den Konstruktor geschmissen, also nicht wundern...
Jedenfalls ist die Funktion 'deb($var)' dasselbe wie: 'die('<pre>'.print_r($var ,TRUE))'
ich habe ein kleines Problem,
nun ich habe versucht eine Verbindung über einen TCP Socket auf den Query-Port auf unserem Teamspeak zu verbinden um daraus die Aktuelle Online-Anzahl der Leute und die Maximalanzahl raus zu bekommen.
Nunja, die 1. Ausgabe sieht dermassen aus:
TS3
Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a list of commands and "help " for information on a specific command.
Der Code nochmals:
PHP Code:
<?php
final class eTeamspeak {
private $socket;
private $userData;
public function __construct($address, $queryPort, $superAdmin, $superPasswd, $serverID) {
if(!preg_match('/^\d+\.\d+\.\d+\.\d+$/', $address))
$address = gethostbyname($address);
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die('Could not create socket');
socket_connect($this->socket, $address, $queryPort) or die('Could not connect to server');
$this->getReturn();
if(!$this->socket)
die('ERROR: '.$errno.' - '.$errstr);
$this->userData['SAUsername'] = $superAdmin;
$this->userData['SAPassword'] = $superPasswd;
$this->userData['ServerID'] = $serverID;
$this->sendCommand('login '.$this->userData['SAUsername'].' '.$this->userData['SAPassword']);
$this->getReturn();
$this->sendCommand('use sid='.$this->userData['ServerID']);
echo $this->getReturn(TRUE);
$this->sendCommand('help');
echo $this->getReturn(TRUE);
die();
}
public function __destruct() {
$res = socket_close($this->socket);
if($res)
echo 'Socket Error: '.socket_strerror(socket_last_error());
}
private function sendCommand($command) {
return socket_write($this->socket, $command."\r\n", strlen($command."\r\n"));
}
private function getReturn($nl2br = NULL) {
$text = socket_read($this->socket, 1024, PHP_NORMAL_READ);
return $nl2br ? nl2br($text) : $text;
}
public function getServerinfo() {
$this->sendCommand('serverlist -uid '.$this->userData['ServerID']);
$result = $this->getReturn();
deb($result);
preg_match('#virtualserver_id='.$this->userData['ServerID'].' virtualserver_port=[0-9]* virtualserver_status=online virtualserver_clientsonline=([0-9]+) virtualserver_queryclientsonline=([0-9]+) virtualserver_maxclients=([0-9]+)#', $result, $pregResult);
deb($vars);
return $vars;
}
}
Jedenfalls ist die Funktion 'deb($var)' dasselbe wie: 'die('<pre>'.print_r($var ,TRUE))'
Comment