

UPD 单播
javascript
// server.js
const dgram = require('node:dgram')
const server = dgram.createServer('upd4')
server.on('listening', () => {
const { address, port } = server.address()
console.log(address, port)
})
server.on('message', (msg, remoteInfo) => {
const { address, port } = remoteInfo
server.send('world', port, address, (err) => {
if (err) {
console.log('发送失败')
} else {
console.log('发送成功')
}
})
})
server.bind(41234) // 绑定监听端口javascript
// client.js
const dgram = require('node:dgram')
const client = dgram.createServer('upd4')
client.on('listening', () => {
const { address, port } = server.address()
console.log(address, port)
})
client.on('message', (msg, remoteInfo) => {
const { address, port } = remoteInfo
server.send('world', port, address, (err) => {
if (err) {
console.log('发送失败')
} else {
console.log('发送成功')
}
})
})
// server.bind(41234) // 绑定监听端口, 客户端可以不分配,使用随机端口广播
javascript
// server.js
const dgram = require('node:dgram')
const server = dgram.createServer('upd4')
server.on('listening', () => {
server.setBroadcaset(true)
const { address, port } = server.address()
console.log(address, port)
// 每两秒发送一次广播信息
setInterval(() => {
const ip = '255.255.255.255' // 广播地址(受限于局域网)
const ip2 = '192.169.1.255' // 直接地址,这个地址末尾是 255,可以跨网段进行广播,比如当前网段是192.168.2.x,可以往 192.168.1.255 进行传播
// 凡是在局域网内监听了 8000 端口的 upd 服务,都会收到此广播
server.send('message', 8000, ip, (err) => {
if (err) {
console.log('发送失败')
} else {
console.log('发送成功')
}
})
}, 2e3)
})javascript
// client.js
const dgram = require('node:dgram')
const client = dgram.createServer('upd4')
client.on('message', (msg, remoteInfo) => {
const { address, port } = remoteInfo
console.log(`get msg from ${address}:${port}, ${msg}`)
})
server.bind(8000)组播(只有加入了对应的组,才能接收到信息)
javascript
// server.js
const dgram = require('node:dgram')
const server = dgram.createServer('upd4')
server.on('listening', () => {
const { address, port } = server.address()
console.log(address, port)
server.send('message', 8000, '224.0.1.100', (err) => {
if (err) {
console.log('发送失败')
} else {
console.log('发送成功')
}
})
})javascript
// client.js
const dgram = require('node:dgram')
const client = dgram.createServer('upd4')
client.on('listening', () => {
client.addMembership('224.0.1.100')
})
client.on('message', (msg, remoteInfo) => {
const { address, port } = remoteInfo
console.log(`get msg from ${address}:${port}, ${msg}`)
})
server.bind(8000)