gpt4 book ai didi

php - PHP数据包到Minecraft服务器?

转载 作者:行者123 更新时间:2023-12-03 11:54:16 25 4
gpt4 key购买 nike

数据包格式的来源:http://wiki.vg/Protocol

我正在尝试用php编写一个程序,该程序会将数据包发送到我托管的Minecraft服务器。这可能是针对不支持相同API格式的手机的多人游戏实现。我下面的代码是我使这项工作失败的尝试。我怎样才能正确地做到这一点?服务器正在识别某些东西,但是它没有发回任何东西或其他东西。下面的代码应该发送0x00,即握手数据包,以使用下一个状态ID请求服务器上的统计信息:1. Minecraft应该以相同的ID进行响应,但服务器motd和玩家计数。对于1.7.2,它将发送一个server-icon.png。但是我可以放心地忽略该数据,因为它仅是直接连接。

我在做什么错,该如何解决?

Main.php

require("socket.php");

$f = getStat("zontreck.dyndns.biz",25565);
/*$za = 0x00;
$za[0] = 74;
$za[1] = "zontreck.dyndns.biz";
$za[2] = 25565;
$za[3] = 1;
*/
$za = array(0x00,"Protocol Version"=>73,
"Server Address"=>"zontreck.dyndns.biz",
"Server Port"=>25565,
"Next State"=>1);
$dd = doWrite(pack("a",$za),$f);
echo("Response from doWrite: " .$dd."\n");
echo("Sending: " . pack("a",$za)."\n");
/*if(doWrite(pack("a",$za),$f))
{
echo(fgets($f));
} else {
echo(fgets($f));
}*/

$ff = fgets($f);
//$u = unpack("a",$ff);
fclose($f);
echo("Data from server: " . $ff."\n");
echo("Data from server length: " . strlen($ff)."\n");
//fclose($f);
?>

socket.php
<?

function getStat($url = "",$port=25565)
{
$f = fsockopen($url,$port);
return $f;
}

function doWrite($packet,$socket)
{
return fwrite($socket,$packet);
}


?>

来自main.php的输出
root@zontreck:/var/www/slmc# php main.php
PHP Notice: Array to string conversion in /var/www/slmc/main.php on line 16
Response from doWrite: 1
PHP Notice: Array to string conversion in /var/www/slmc/main.php on line 18
Sending: A
Data from server:
Data from server length: 0
root@zontreck:/var/www/slmc#

最佳答案

您可能需要看一下以下内容:
https://forums.bukkit.org/threads/web-php-simple-to-use-minecraft-server-status-query.144329/

这基本上是对该库的一些解释,它确实可以满足您的要求:
https://github.com/FunnyItsElmo/PHP-Minecraft-Server-Status-Query

它还使用套接字,因此您始终可以获取一些代码并根据需要对其进行修改,但是我强烈建议您按原样使用该库,因为它可以完成您要完成的工作。

关于php - PHP数据包到Minecraft服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20833409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com