rollylni / rcon-protocol
该库是基于源RCON协议编写的
0.1.0
2021-04-17 18:05 UTC
Requires
- php: >=7.1
- rollylni/triggers: 0.0.3
README
RCON协议是一种基于TCP/IP的通信协议,允许通过“远程控制台”或RCON向服务器发送控制台命令。RCON通常用于允许服务器所有者管理他们的游戏服务器,而不需要直接访问服务器运行的机器。为了接受命令,必须首先使用服务器的RCON密码进行连接验证
安装
composer require rollylni/rcon-protocol
示例服务器
require "vendor/autoload.php"; use RconProtocol\RconServer; use RconProtocol\ServerClient; use RconProtocol\Packet; $port = 27015; $host = "0.0.0.0"; $server = new RconServer($port, $host); # set ur password $server->setPassword("Your Password"); # or generate $len = 8; $server->generatePassword($len); $server->setMaxClients(10); # client login timeout $server->setTimeout(10); # Events $handler = $server->getHandler(); $handler->add("onTimeout", function(ServerClient $c) { echo $c->getPeerName() . ": timeout!\n"; }); $handler->add("onConnection", function(ServerClient $c) { echo $c->getPeerName() . ": connection...\n"; }); $handler->add("onDisconnection", function(ServerClient $c) { echo $c->getPeerName() . ": disconnection...\n"; }); $handler->add("onReceive", function(ServerClient $c, Packet $p) { echo $c->getPeerName() . ": ". $p->getBody() ."\n"; }); $handler->add("onAuthorized", function(ServerClient $c) { echo $c->getPeerName() . ": authorized!\n"; }); $handler->add("onFailed", function(ServerClient $c, string $input) { echo $c->getPeerName() . ": '$input' wrong password!\n"; }); $handler->add("onCommand", function(ServerClient $c, string $cmd) { //exec command echo $c->getPeerName() . ": $cmd\n"; }); // Starting RCON server $server->start(); // Stopping $server->stop();
示例客户端
use RconProtocol\RconClient; $serverHost = "0.0.0.0"; $serverPort = 27015; $serverPassword = ""; $execCommand = "cmd"; $timeout = 10; $client = new RconClient($serverHost, $serverPort, $timeout); $client->connect(); if ($client->authorize($serverPassword)) { echo "Response: " . $client->sendCommand($execCommand); } else { $client->disconnect(); }