你是否必须closuresNode.js中的UDP(dgram)客户端,还是可以重用它?

文档 (以及我看过的一些库)似乎表明,每次发送时都closures客户端:

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()吗?

我已经在localhosttesting了它(也就是重用客户端),并且发送了多个数据包(至less到了同一个目的地),但是这还不是一个足够的testing来保证在大的在那里广泛的世界。

send()的源头调用一个_startReceiving()函数,该函数“绑定到一个随机端口”,然后“开始接收” – 但我不清楚应该在这里接收什么,因为我们实际上是在发送。 无论如何,这足以让我觉得可能有与保持一个客户的问题…我只是不知道他们是什么。

您可以重复使用udp套接字来处理多个请求。 例如,这种行为也出现在多个testing中: https : //github.com/joyent/node/blob/master/test/simple/test-dgram-pingpong.js

udp套接字绑定到一个随机的端口,因为它必须指定一个带有端口的源地址。