文档(以及我查看过的许多库)似乎表明您每次发送时都会关闭客户端:
var dgram = require('dgram');
var message = new Buffer("Some bytes");
var client = dgram.createSocket("udp4");
client.send(message, 0, message.length, 41234, "localhost", function(err, bytes) {
client.close();
});
老实说,我对 UDP 的内部工作原理了解不多,但是client
每次要发送 UDP 数据包时,什么会阻止您重用呢?你必须这样做close()
吗?
我已经对其进行了测试localhost
(即重用客户端),它可以很好地发送多个数据包(至少到同一个目的地),但这还不足以让我确信它在大范围内是可以的外面的世界。
send() 的源调用一个_startReceiving()
函数,该函数“绑定到一个随机端口”,然后“开始接收”——但我不清楚这里应该接收什么,因为我们实际上是在发送。无论如何,这足以让我认为留住客户可能存在问题……我只是不确定它们是什么。