我正在编写一个从 HL/Team Fortress 2 服务器接收分数的 javascript/node.js 程序,但我似乎无法接收游戏服务器发送的 udp 数据包。(我可以接收由 UDP 测试工具传输的 udp 数据包)我找到了一个可以工作的 python 库,但它在从服务器接收数据之前使用了 socket.connect()。
Python snipplet(使用异步):
self.create_socket(socket.AF_INET, socket.SOCK_DGRAM)
self.bind(('0.0.0.0', 17015))
self.connect((IP of server, 27015))
data = self.recv(1400)
但在 node.js 中,我似乎无法连接到远程地址。
到目前为止我的代码:
var dgram = require('dgram')
var server = dgram.createSocket("udp4");
server.on('message', function (data, rinfo) {
data = data.toString();
if (data.startsWith('\xff\xff\xff\xff') && data.endsWith('\n\x00')) {
console.log(data);
Logparser(data);
} else {
console.log(data);
}
});
server.bind(17015);
使用wireshark http://pastebin.com/W7i9CV2u捕获的UDP数据包