gpt4 book ai didi

php - Node.js UDP 流

转载 作者:太空宇宙 更新时间:2023-11-03 22:16:32 24 4
gpt4 key购买 nike

我正在尝试将一些代码从 PHP“移植”到 Node 中,但我正在努力找出如何让它工作。我也尝试通过 UDP 连接到 RCON 服务器。这是 PHP 版本的简化版本,可以运行:

$address = '1.2.3.4:1234';
$password = 'password';

$socket = stream_socket_client('udp://' . $address, $errno, $errstr);
stream_set_blocking($socket, 0);

$loginRequest = chr(0x45) . $password;
stream_socket_sendto($socket, $loginRequest, 0, $address);
echo 'RCON Login Request Sent' . PHP_EOL;
echo $loginRequest . PHP_EOL;
echo PHP_EOL;

do {
$data = stream_socket_recvfrom($socket, 127, 0, $address);
} while (!$data);
echo 'RCON Received Response' . PHP_EOL;
echo $data . PHP_EOL;

这是我在 Node 中得到的,它似乎没有做任何事情。我什至没有从服务器得到任何连接确认。

var address = '1.2.3.4';
var port = '1234';
var password = 'password';

var socket = require('dgram').createSocket('udp4');

socket.on('message', function (msg, from) {
console.log(msg);
});

socket.on('listening', function () {
var loginPacket = new Buffer(String.fromCharCode(0xff) + password);
socket.send(loginPacket, 0, loginPacket.length, port, address, function (err, bytes) {
console.log('packet sent');
});
});

socket.on('error', function (err) {
console.log('ERROR: ', err);
});

socket.bind(0);

对此的任何帮助都会很棒!玛卡134

最佳答案

将字符串传递给 Buffer 构造函数的默认编码不是 binary,因此您需要传递二进制作为编码: new Buffer('\xFF' + 密码,'二进制')。第一个 0xFF 字节会导致默认 utf8 编码出现问题。另外,另一个区别是您在 Node 中使用 0xFF 而在 PHP 中使用 0x45

关于php - Node.js UDP 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26825654/

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