2

我有 srcds(源专用服务器)

在控制台添加logaddress_add 0.0.0.0:25001

这打开将日志发送到远程服务器

试图以这种方式捕获日志

var net = require('net');
var server = net.createServer(function(c) { 
    c.on('end', function() {
        console.log('server disconnected');
    });
    c.pipe(c);
});
server.listen(25001);

然后

var net = require('net');
var client = net.connect({port: 25001});

client.on('data', function(data) {
    console.log(data.toString());
    client.end();
});
client.on('end', function() {
    console.log('client disconnected');
});

然后

var s = dgram.createSocket('udp4');
s.bind(25001, function(data) {
    console.log(data)
});

没有结果。有人可以帮忙吗?

提前致谢

4

2 回答 2

4

[解决了]

在 SRCDS 服务器

logaddress_add 0.0.0.0:8006 //for local ip

在 app.js

var dgram = require('dgram'),
    server = dgram.createSocket('udp4');

server.on('message', function (message, rinfo) {
var msg = message.toString('ascii').slice(5,-1);    
console.log(msg);
    });
server.on('listening', function () {
    var address = server.address();
    console.log('UDP Server listening ' + address.address + ':' + address.port);
});

server.bind(8006);  
于 2013-11-12T12:51:55.777 回答
0

我最终编写了一个小库来执行此操作(srcds-log-receiver),它验证数据包格式,提取日期并允许您使用 sv_logsecret 函数对连接进行少量身份验证,因为 UDP 数据包很容易伪造。

我还编写了一个解析器来将这些日志行转换为有用的对象。

于 2016-07-22T14:04:22.820 回答