我有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)
});
没有结果。有人可以帮忙吗?
提前致谢
答案 0 :(得分:3)
[解决]
在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);
答案 1 :(得分:0)
我最后编写了一个小库来执行此操作(srcds-log-receiver),它验证数据包格式,提取日期并允许您使用sv_logsecret函数对连接进行少量身份验证,因为UDP数据包很容易伪造。
我还写了a parser来将这些日志行转换为有用的对象。