3

ドキュメント(および私が調べた多くのライブラリ)は、送信するたびにクライアントを閉じることを示しているようです:

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()、実際に送信しているため、ここで何を受信する必要があるかは不明です。いずれにせよ、クライアントを維持することに問題がある可能性があると私に思わせるには十分です...私はそれらが何であるかわかりません。

4

2 に答える 2

1

複数のリクエストに対して udp ソケットを再利用できます。たとえば、この動作は複数のテストでも見られます: https://github.com/joyent/node/blob/master/test/simple/test-dgram-pingpong.js

ポートで送信元アドレスを指定する必要があるため、udp ソケットはランダムなポートにバインドします。

于 2012-06-18T12:06:30.163 に答える