- Баллы
- 103
- Имя в Minecraft
- goul
Никак не могу понять: что отсылает серверу скрипт\лаунчер и что получает в ответ? В одних скриптах отсылается одно, в других другое. Может, знающий человек мне объяснит, что к чему?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Ну, откопал вот такую ерунду. Спокойно показывает минимальное и максимальное кол - во человек. Там дальше есть другая обработка исключений, но нам оно пока - что не нужно.Смотря что надо, можно придумывать свой велосипед.
public function __construct($IP, $Port, $timeout) {
$this->IP = $IP;
$this->Port = $Port;
$this->to = $timeout;
if($this->Socket = @stream_socket_client('tcp://'.$this->IP.':'.$Port, $this->to)) {
if(strpos($this->IP, '[') === 0 && strpos($this->IP, ']')===(strlen($this->IP)-1))
$this->IP=trim($this->IP, '[]');
fwrite($this->Socket, "\xfe");
$Handle = fread($this->Socket, 1024);
$Handle=substr($Handle, 1);
if(strpos($Handle,"\x00\x00")!=0){
$Handle = explode("\x00\x00",$Handle);
$Handle = str_replace("\x00", '', $Handle);
$this->MOTD=$Handle[3];
$this->CurPlayers=$Handle[4];
$this->MaxPlayers=$Handle[5];
}else{
Handle=explode("\xa7", $Handle);$Handle=str_replace("\x00", '', $Handle);
$this->MOTD=$Handle[0];$this->CurPlayers=$Handle[1];$this->MaxPlayers=$Handle[2];
}
unset($Handle); fclose($this->Socket);
}
}
public static String[] pollServer(String ip, int port)
{
Socket soc = null;
DataInputStream dis = null;
DataOutputStream dos = null;
try
{
soc = new Socket();
soc.setSoTimeout(6000);
soc.setTcpNoDelay(true);
soc.setTrafficClass(18);
soc.connect(new InetSocketAddress(ip, port), 6000);
dis = new DataInputStream(soc.getInputStream());
dos = new DataOutputStream(soc.getOutputStream());
dos.write(254);
if (dis.read() != 255)
{
throw new IOException("Bad message");
}
String servc = readString(dis, 256);
servc.substring(3);
if (servc.substring(0,1).equalsIgnoreCase("§") && servc.substring(1,2).equalsIgnoreCase("1"))
{
servtype = 1;
return servc.split("\u0000");
}
else
{
servtype = 2;
return servc.split("§");
}
} catch (Exception e)
{
return new String[] { null, null, null };
} finally
{
try { dis.close(); } catch (Exception e) {}
try { dos.close(); } catch (Exception e) {}
try { soc.close(); } catch (Exception e) {}
}
}
Сформировать специального вида строчку
\u00a71\u000078\u00001.6.4\u0000A Minecraft 1.6.4 Server\u0000666\u0000666
Щас покопаюсь как клиент отправляет.
Просто отправить серверу int 254, как я понял из кода java. В коде php отправка "\xfe". После чего получаем заветные данные.Очень ждём-с
Просто отправить серверу int 254, как я понял из кода java. В коде php отправка "\xfe". После чего получаем заветные данные.