`dgram` 这个名字的来源可以拆分为两个部分:
- **D**:代表 "Datagram",即数据报。在计算机网络中,数据报是一种用于发送和接收信息的基本单元,特别是在无连接的协议(如 UDP)中使用。
- **gram**:这个后缀通常用于表示“数据包”或“消息”的单位。
因此,`dgram` 模块的命名反映了它的功能,即用于处理 UDP 数据报的模块。它专注于发送和接收独立的、短小的数据包,而不是建立连接或保证数据的完整性。这与 TCP 的连接导向特性形成了鲜明的对比。
### 示例代码
以下是一个简单的 UDP 服务器和客户端示例:
**UDP 服务器**:
```javascript
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('message', (msg, rinfo) => {
console.log(`Received message: ${msg} from ${rinfo.address}:${rinfo.port}`);
});
server.bind(41234, () => {
console.log('Server is listening on port 41234');
});
```
**UDP 客户端**:
```javascript
const dgram = require('dgram');
const message = Buffer.from('Hello, UDP server!');
const client = dgram.createSocket('udp4');
client.send(message, 41234, 'localhost', (err) => {
if (err) console.error(err);
client.close();
});
```
### 总结
`dgram` 模块提供了一个高效的方式来处理 UDP 数据传输,适用于需要快速、低延迟通信的应用。