Node.js 还支持 UDP 广播吗?
我调用了 dgram.setBroadcast(flag),它在 Node.js v0.6.3 版本上返回了一个“尚未实现”错误。
Node.js 还支持 UDP 广播吗?
编辑:我发现一些讨论说广播在 0.5.x 中被删除,并且可能会在将来重新出现。
仍然未尚未在 v0.6.6 中实现
我尝试过0.6.10 在 windows 7 x64 中,多播尚未工作。
var dgram = require('dgram');
var PACKET_LEN = 64;
var message = new Buffer(PACKET_LEN);
var client = dgram.createSocket("udp4");
client.setMulticastTTL(128);
//dgram.addMembership(multicastAddress, [multicastInterface])
client.addMembership('234.18.128.10', "172.18.128.64") ;
// dgram.send(buf, offset, length, port, address, [callback])
client.send(message, 0, PACKET_LEN, 7000, "234.18.128.10");
client.close();
I got an "Error: addMembership EADDRNOTAVAIL".
参考此处:https://github.com/joyent/node/blob/master/test/simple/test-dgram-multicast-multi-process.js, 我终于在我的 Windows 电脑上实现了多播工作。
节点版本=0.6.19
var dgram = require('dgram');
var message = new Buffer('this is my message');
var client = dgram.createSocket("udp4");
client.bind();
client.setBroadcast(true)
client.setMulticastTTL(128);
client.send(message, 0, message.length, 5007, "224.1.1.1");
client.close();
I called dgram.setBroadcast(flag)
and it returned a not yet implemented error on Node.js version v0.6.3.
Does Node.js still support UDP broadcasting?
Edit: I found some discussions said that broadcast was removed in 0.5.x and probably be back in the future.
still not yet implemented in v0.6.6
I tried 0.6.10 in windows 7 x64, the multicast did not work yet.
var dgram = require('dgram');
var PACKET_LEN = 64;
var message = new Buffer(PACKET_LEN);
var client = dgram.createSocket("udp4");
client.setMulticastTTL(128);
//dgram.addMembership(multicastAddress, [multicastInterface])
client.addMembership('234.18.128.10', "172.18.128.64") ;
// dgram.send(buf, offset, length, port, address, [callback])
client.send(message, 0, PACKET_LEN, 7000, "234.18.128.10");
client.close();
I got an "Error: addMembership EADDRNOTAVAIL".
after ref here: https://github.com/joyent/node/blob/master/test/simple/test-dgram-multicast-multi-process.js ,
I finally make multicast work on my windows pc.
node ver=0.6.19
var dgram = require('dgram');
var message = new Buffer('this is my message');
var client = dgram.createSocket("udp4");
client.bind();
client.setBroadcast(true)
client.setMulticastTTL(128);
client.send(message, 0, message.length, 5007, "224.1.1.1");
client.close();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
今天是你的幸运日:nodejs 0.6.9 中重新引入了数据报支持。
http://blog.nodejs.org/2012/01/ 27/节点-v0-6-9/
Today's your lucky day: Datagram support was reintroduced in nodejs 0.6.9.
http://blog.nodejs.org/2012/01/27/node-v0-6-9/