【发布时间】:2012-06-18 10:43:24
【问题描述】:
The docs(以及我看过的许多库)似乎表明您每次发送时都会关闭客户端:
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 的内部工作原理了解不多,但是每次要发送 UDP 数据包时,什么会阻止您仅重用 client?你有到close()了吗?
我已经在localhost 上对其进行了测试(即重用客户端),它可以很好地发送多个数据包(至少到同一个目的地),但这还不足以让我确信它会在广阔的世界中一切安好。
The source of send() 调用 _startReceiving() 函数,该函数“绑定到随机端口”,然后“开始接收” - 但我不清楚这里应该接收什么,因为我们实际上是在发送。无论如何,这足以让我认为留住客户可能存在问题......我只是不确定它们是什么。
【问题讨论】: