文章目录
- 在NodeJS中有三种socket:1. TCP,2. UDP,3. Unix域套接字。 UDP/datagram sockets Class: dgram.Socket Event: 'close' Event: 'connect' Event: 'error' Event: 'listening' Event: 'message' socket.addMembership(multicastAddress[, multicastInterface]) socket.addSourceSpecificMembership(sourceAddress, groupAddress[, multicastInterface]) socket.address() socket.bind([port][, address][, callback]) socket.bind(options[, callback]) socket.close([callback]) socket.connect(port[, address][, callback]) socket.disconnect() socket.dropMembership(multicastAddress[, multicastInterface]) socket.dropSourceSpecificMembership(sourceAddress, groupAddress[, multicastInterface]) socket.getRecvBufferSize() socket.getSendBufferSize() socket.ref() socket.remoteAddress() socket.send(msg[, offset, length][, port][, address][, callback]) Note about UDP datagram size socket.setBroadcast(flag) socket.setMulticastInterface(multicastInterface) Example: IPv6 outgoing multicast interface Example: IPv4 outgoing multicast interface Call results socket.setMulticastLoopback(flag) socket.setMulticastTTL(ttl) socket.setRecvBufferSize(size) socket.setSendBufferSize(size) socket.setTTL(ttl) socket.unref() dgram module functions dgram.createSocket(options[, callback]) dgram.createSocket(type[, callback])
- The dgram module provides an implementation of UDP datagram sockets.
- server.js const dgram = require('dgram'); const server = dgram.createSocket('udp4'); server.on('error', (err) => { console.log(`server error:\n${err.stack}`); server.close(); }); server.on('message', (msg, rinfo) => { console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); }); server.on('listening', () => { const address = server.address(); console.log(`server listening ${address.address}:${address.port}`); }); server.bind(41234); // Prints: server listening 0.0.0.0:41234 nodejs接收端的运行截图如下: 测试c++发送端的运行截图如下:
- 例子1: const dgram = require('dgram'); const message = Buffer.from('Some bytes'); const client = dgram.createSocket('udp4'); client.send(message, 41234, 'localhost', (err) => { client.close(); }); 例子2: const dgram = require('dgram'); const buf1 = Buffer.from('Some '); const buf2 = Buffer.from('bytes'); const client = dgram.createSocket('udp4'); client.send([buf1, buf2], 41234, (err) => { client.close(); }); 例子3: const dgram = require('dgram'); const message = Buffer.from('Some bytes'); const client = dgram.createSocket('udp4'); client.connect(41234, 'localhost', (err) => { client.send(message, (err) => { client.close(); }); });
-
- const dgram = require('dgram'); const server = dgram.createSocket('udp4'); // const local_ip = "192.168.0.xx"; const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址) server.on('close', () => { console.log('close socket'); }); server.on('listening', () => { console.log('listening...' ); server.setBroadcast(true); server.setMulticastTTL(128); server.addMembership(multicast_ip); setInterval(() => { send_msg(); }, 2000); }); server.on('message', (msg, rinfo) => { console.log(`receive client message from ${rinfo.address}: ${rinfo.port}: ${msg}`); }); server.bind(); // 随机绑定本机一个端口 function send_msg() { var date = new Date(); console.log(date.toLocaleDateString() + " " + date.toLocaleTimeString() + ': send a message.'); server.send('hi, i am server...', '8062', multicast_ip); }
- const dgram = require('dgram'); var client = dgram.createSocket('udp4'); // const local_ip = '192.168.0.xx'; const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址) client.on('close', () => { console.log('client closed'); }); client.on('error', (err) => { console.log('client error' + err); }); client.on('listening', () => { console.log('client listening...'); client.setBroadcast(true); client.setMulticastTTL(128); client.addMembership(multicast_ip); }); client.on('message', (msg, rinfo) => { console.log(`receive server message from ${rinfo.address}: ${rinfo.port}: ${msg}`); }); client.bind('8062'); // 监听组播数据的端口 测试接收端1结果如下: 测试接收端2结果如下:
(本节内容如下:),在NodeJS中有三种socket:1. TCP,2. UDP,3. Unix域套接字。,UDP/datagram sockets,The dgram module provides an implementation of UDP datagram sockets.,nodejs接收端的运行截图如下:
,测试c++发送端的运行截图如下:
,例子1:,例子2:,例子3:,
,测试接收端1结果如下:
测试接收端2结果如下:
,
(本节内容如下:)
在NodeJS中有三种socket:1. TCP,2. UDP,3. Unix域套接字。
UDP/datagram sockets
Class: dgram.Socket
Event: 'close'
Event: 'connect'
Event: 'error'
Event: 'listening'
Event: 'message'
socket.addMembership(multicastAddress[, multicastInterface])
socket.addSourceSpecificMembership(sourceAddress, groupAddress[, multicastInterface])
socket.address()
socket.bind([port][, address][, callback])
socket.bind(options[, callback])
socket.close([callback])
socket.connect(port[, address][, callback])
socket.disconnect()
socket.dropMembership(multicastAddress[, multicastInterface])
socket.dropSourceSpecificMembership(sourceAddress, groupAddress[, multicastInterface])
socket.getRecvBufferSize()
socket.getSendBufferSize()
socket.ref()
socket.remoteAddress()
socket.send(msg[, offset, length][, port][, address][, callback])
Note about UDP datagram size
socket.setBroadcast(flag)
socket.setMulticastInterface(multicastInterface)
Example: IPv6 outgoing multicast interface
Example: IPv4 outgoing multicast interface
Call results
socket.setMulticastLoopback(flag)
socket.setMulticastTTL(ttl)
socket.setRecvBufferSize(size)
socket.setSendBufferSize(size)
socket.setTTL(ttl)
socket.unref()
dgram module functions
dgram.createSocket(options[, callback])
dgram.createSocket(type[, callback])
The dgram module provides an implementation of UDP datagram sockets.
- server.js
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('error', (err) => {
console.log(`server error:\n${err.stack}`);
server.close();
});
server.on('message', (msg, rinfo) => {
console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});
server.on('listening', () => {
const address = server.address();
console.log(`server listening ${address.address}:${address.port}`);
});
server.bind(41234);
// Prints: server listening 0.0.0.0:41234
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('error', (err) => {
console.log(`server error:\n${err.stack}`);
server.close();
});
server.on('message', (msg, rinfo) => {
console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});
server.on('listening', () => {
const address = server.address();
console.log(`server listening ${address.address}:${address.port}`);
});
server.bind(41234);
// Prints: server listening 0.0.0.0:41234
nodejs接收端的运行截图如下: 
测试c++发送端的运行截图如下: 
例子1:
const dgram = require('dgram');
const message = Buffer.from('Some bytes');
const client = dgram.createSocket('udp4');
client.send(message, 41234, 'localhost', (err) => {
client.close();
});
例子2:
const dgram = require('dgram');
const buf1 = Buffer.from('Some ');
const buf2 = Buffer.from('bytes');
const client = dgram.createSocket('udp4');
client.send([buf1, buf2], 41234, (err) => {
client.close();
});
例子3:
const dgram = require('dgram');
const message = Buffer.from('Some bytes');
const client = dgram.createSocket('udp4');
client.connect(41234, 'localhost', (err) => {
client.send(message, (err) => {
client.close();
});
});
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
// const local_ip = "192.168.0.xx";
const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址)
server.on('close', () => {
console.log('close socket');
});
server.on('listening', () => {
console.log('listening...' );
server.setBroadcast(true);
server.setMulticastTTL(128);
server.addMembership(multicast_ip);
setInterval(() => {
send_msg();
}, 2000);
});
server.on('message', (msg, rinfo) => {
console.log(`receive client message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});
server.bind(); // 随机绑定本机一个端口
function send_msg() {
var date = new Date();
console.log(date.toLocaleDateString() + " " + date.toLocaleTimeString() + ': send a message.');
server.send('hi, i am server...', '8062', multicast_ip);
}
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
// const local_ip = "192.168.0.xx";
const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址)
server.on('close', () => {
console.log('close socket');
});
server.on('listening', () => {
console.log('listening...' );
server.setBroadcast(true);
server.setMulticastTTL(128);
server.addMembership(multicast_ip);
setInterval(() => {
send_msg();
}, 2000);
});
server.on('message', (msg, rinfo) => {
console.log(`receive client message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});
server.bind(); // 随机绑定本机一个端口
function send_msg() {
var date = new Date();
console.log(date.toLocaleDateString() + " " + date.toLocaleTimeString() + ': send a message.');
server.send('hi, i am server...', '8062', multicast_ip);
}

const dgram = require('dgram');
var client = dgram.createSocket('udp4');
// const local_ip = '192.168.0.xx';
const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址)
client.on('close', () => {
console.log('client closed');
});
client.on('error', (err) => {
console.log('client error' + err);
});
client.on('listening', () => {
console.log('client listening...');
client.setBroadcast(true);
client.setMulticastTTL(128);
client.addMembership(multicast_ip);
});
client.on('message', (msg, rinfo) => {
console.log(`receive server message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});
client.bind('8062'); // 监听组播数据的端口
const dgram = require('dgram');
var client = dgram.createSocket('udp4');
// const local_ip = '192.168.0.xx';
const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址)
client.on('close', () => {
console.log('client closed');
});
client.on('error', (err) => {
console.log('client error' + err);
});
client.on('listening', () => {
console.log('client listening...');
client.setBroadcast(true);
client.setMulticastTTL(128);
client.addMembership(multicast_ip);
});
client.on('message', (msg, rinfo) => {
console.log(`receive server message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});
client.bind('8062'); // 监听组播数据的端口
测试接收端1结果如下:
测试接收端2结果如下: 
© 版权声明
文章版权归作者所有,未经允许请勿转载。