连接到Node.js中的udp套接字

时间:2013-07-29 17:04:06

标签: python node.js udp

我正在编写一个javascript / node.js程序,它接收来自HL / Team Fortress 2服务器的分数,但我似乎无法接收游戏服务器发送的udp数据包。 (我可以收到UDP测试工具发送的udp数据包) 我找到了一个可以工作的python库,但它在从服务器接收数据之前使用了socket.connect()。

Python snipplet(使用asyncore):

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数据包

1 个答案:

答案 0 :(得分:0)

您需要使用addMembership()方法加入多播组,在UDP中未连接到服务器,永远不会创建连接,并且无法保证您将收到任何/所有数据包。您加入多播组并接收具有到达您的网卡的group-id的数据包,python方法名称具有误导性。

http://nodejs.org/api/dgram.html#dgram_socket_addmembership_multicastaddress_multicastinterface