linux

Node.js 在 Linux 上如何进行网络编程

小樊
34
2025-08-25 16:16:25
栏目: 编程语言

在 Linux 上使用 Node.js 进行网络编程,主要依赖于内置的 netdgram 模块。以下是使用这两个模块进行网络编程的基本步骤和示例。

1. 使用 net 模块进行 TCP 网络编程

net 模块提供了创建基于流的 TCP 服务器和客户端的功能。

创建一个简单的 TCP 服务器

const net = require('net');

const server = net.createServer((socket) => {
  console.log('客户端已连接');

  socket.on('data', (data) => {
    console.log(`收到数据: ${data}`);
    socket.write(`服务器回复: ${data}`);
  });

  socket.on('end', () => {
    console.log('客户端已断开连接');
  });
});

server.listen(3000, () => {
  console.log('服务器正在监听端口 3000');
});

创建一个简单的 TCP 客户端

const net = require('net');
const client = net.createConnection(3000, '127.0.0.1', () => {
  console.log('已连接到服务器');
  client.write('你好,服务器!');
});

client.on('data', (data) => {
  console.log(`收到数据: ${data}`);
  client.end();
});

client.on('end', () => {
  console.log('已断开与服务器的连接');
});

2. 使用 dgram 模块进行 UDP 网络编程

dgram 模块提供了创建基于数据报的 UDP 服务器和客户端的功能。

创建一个简单的 UDP 服务器

const dgram = require('dgram');

const server = dgram.createSocket('udp4');

server.on('listening', () => {
  const address = server.address();
  console.log(`UDP 服务器正在监听 ${address.address}:${address.port}`);
});

server.on('message', (msg, rinfo) => {
  console.log(`收到来自 ${rinfo.address}:${rinfo.port} 的数据: ${msg}`);
  server.send(`服务器回复: ${msg}`, rinfo.port, rinfo.address);
});

server.bind(3001);

创建一个简单的 UDP 客户端

const dgram = require('dgram');

const client = dgram.createSocket('udp4');

client.on('listening', () => {
  const message = '你好,UDP 服务器!';
  console.log(`发送数据: ${message}`);
  client.send(message, 3001, '127.0.0.1', (err) => {
    if (err) throw err;
    client.close();
  });
});

client.on('message', (msg, rinfo) => {
  console.log(`收到来自 ${rinfo.address}:${rinfo.port} 的数据: ${msg}`);
  client.close();
});

运行示例

  1. 将上述 TCP 服务器代码保存为 tcp_server.js,运行 node tcp_server.js
  2. 将上述 TCP 客户端代码保存为 tcp_client.js,运行 node tcp_client.js
  3. 将上述 UDP 服务器代码保存为 udp_server.js,运行 node udp_server.js
  4. 将上述 UDP 客户端代码保存为 udp_client.js,运行 node udp_client.js

通过这些示例,你可以在 Linux 上使用 Node.js 进行基本的网络编程。根据需求,你可以扩展这些示例,实现更复杂的功能。

0
看了该问题的人还看了