Nodejs之dgram

放肆的年华 提交于 2020-01-19 18:51:58

dgram

dgram数据报提供了UDP数据包socket的实现。

const dgram = require('dgram');
创建dgram.Sockrt的新实例,不使用new
const server = dgram.createSocket('udp4');

error发生错误时触发
server.on('error', (err) => {
  console.log(`服务器异常:\n${err.stack}`);
  关闭一个socket之后触发,一旦触发,则这个socket上将不会触发新的message事件。
  server.close();
});

当有新的数据包被socket接收时,message事件会被触发
server.on('message', (msg, rinfo) => {
  console.log(`服务器接收到来自 ${rinfo.address}:${rinfo.port} 的 ${msg}`);
});

开始监听数据包信息时触发
server.on('listening', () => {
  const address = server.address();
  console.log(`服务器监听 ${address.address}:${address.port}`);
});

server.bind(41234);
// 服务器监听 0.0.0.0:41234

方法

  • addMembership()
    添加组播成员;
  • dropMembership()
    删除组播成员;
  • address()
    返回socket地址信息对象,UDP socket对象包含address、family和port属性;
  • bind()
    绑定端口和主机。
    若端口未指定,操作系统绑定一个随机的端口;
    若address未指定,操作系统会尝试在所有地址上监听;
  • close()
    关闭该socket并停止监听其上的数据。
  • connect()
    关联一个远程地址和端口。
  • disconnect()
    与远程地址断掉的同步函数。
  • ref()
    将socket重新添加到这个引用列表中,并恢复默认行为。
  • unref()
    将socket从node进程的引用列表中删除。
    socket对象不再进行通信,程序会退出。
    即使socket对象还在坚挺数据,也允许退出。
  • send()
    在socket上广播数据报。
    const dgram = require('dgram');
    const message = Buffer.from('一些字节');
    const client = dgram.createSocket('udp4');
    client.send(message, 41234, 'localhost', (err) => {
      client.close();
    });
    
  • setTTL()
    设置数据报生存时间
  • setMulticastTTL()
    设置组播数据报生存时间
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!