Node.js 组播问题

按照node.js权威指南这本书敲的代码:

var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('listening', function () {
    server.setMulticastTTL(128);
    server.addMembership('230.185.192.108');
});

setInterval(broadCast, 1000);

function broadCast() {
    var buf = new Buffer((new Date()).toLocaleString());
    server.send(buf, buf.length, 8000, '230.185.192.108');
}

为毛报这样的错啊?
我的port是8000, 肯定小于65536啊

dgram.js:339
    throw new RangeError('Port should be > 0 and < 65536');
    ^

RangeError: Port should be > 0 and < 65536
    at Socket.send (dgram.js:339:11)
    at Timeout.broadCast [as _onTimeout] (C:\Users\quan.sun\Desktop\js\node\demo1.js:12:12)
    at ontimeout (timers.js:386:14)
    at tryOnTimeout (timers.js:250:5)
    at Timer.listOnTimeout (timers.js:214:5)
阅读 3.3k
2 个回答

犯了一个低级错误, 应该是

server.send(buf, **0**,buf.length, 8000, '230.185.192.108');

buf 的偏移量没写 , 一般为0 ,
参考api :
socket.send(msg, [offset, length,] port [, address] [, callback])

如果不想写偏移量, 那么参数中也不能有buf长度

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题