📜  Node.js socket.send() 方法(1)

📅  最后修改于: 2023-12-03 15:17:55.642000             🧑  作者: Mango

Node.js socket.send() 方法

在 Node.js 中,socket.send() 方法用于向服务器或客户端发送数据。该方法是基于 UDP 协议实现的。

语法
socket.send(msg, [offset, length], port, [host], [callback])
参数
  • msg:必需,要发送的数据,可以是 Buffer 类型、String 类型、TypedArray 类型、DataView 类型等。
  • offset:可选,数据在 Buffer 中的起始位置,默认为 0
  • length:可选,要发送数据的长度,默认为 msg 的长度。
  • port:必需,接收数据的端口号。
  • host:可选,接收数据的 IP 地址,默认为 localhost
  • callback:可选,数据发送完成后的回调函数,参数为 err
返回值

socket.send() 方法没有返回值。

代码示例

下面是一个简单的例子,创建一个 UDP 服务器和客户端,客户端向服务器发送一条消息,服务器接收到消息并发送一个反馈消息。

// 服务器端代码
const dgram = require('dgram');
const server = dgram.createSocket('udp4');

server.on('message', (msg, rinfo) => {
  console.log(`服务器接收到:${msg} 来自 ${rinfo.address}:${rinfo.port}`);
  const responseMsg = `收到反馈,数据长度为 ${msg.length}`;
  server.send(responseMsg, rinfo.port, rinfo.address); 
});

server.on('listening', () => {
  const address = server.address();
  console.log(`服务器已启动在 ${address.address}:${address.port}`);
});

server.bind(3000);
 
// 客户端代码
const dgram = require('dgram');
const client = dgram.createSocket('udp4');
const message = '这是一条消息';

client.send(message, 3000, 'localhost', (err) => {
  if (err) throw err;
  console.log('消息已发送至服务器');
});

client.on('message', (msg, rinfo) => {
  console.log(`客户端接收到:${msg} 来自 ${rinfo.address}:${rinfo.port}`);
  client.close();
});
注意事项

需要注意的是,socket.send() 方法发送的数据包可能会被 IP 分片,因此需要在接收端进行数据重组。同时,UDP 协议本身并不保证数据传输的可靠性,因此在实际使用中需要考虑数据丢包等问题。