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()
设置组播数据报生存时间