c语言编程笔录

首页 >   > 笔记大全

笔记大全

聊聊关于Node中的net模块

更新时间:2023-12-18

Node中的net模块是什么?

Node中的net模块是一个用于创建TCP服务器和TCP客户端的核心模块。它提供了一些高级的函数来管理网络连接和套接字。

如何创建TCP服务器?

    const net = require('net');
    const server = net.createServer(socket => {
      socket.write('Hello World!\r\n');
      socket.end();
    });
    server.on('error', err => {
      throw err;
    });
    server.listen(8080, () => {
      console.log('TCP服务器正在监听8080端口');
    });
  

net.createServer()方法用于创建一个TCP服务器,它的回调函数会在每次有连接请求时被调用。回调函数提供了一个socket对象,我们可以通过socket.write()方法向客户端发送数据,通过socket.end()方法关闭连接。server.on('error')方法可以监听错误事件,server.listen()方法用于启动服务器。

如何创建TCP客户端?

    const net = require('net');
    const client = new net.Socket();
    client.connect(8080, 'localhost', () => {
      console.log('已连接到TCP服务器');
      client.write('Hello, server!');
    });
    client.on('data', data => {
      console.log('已从服务器接收到数据:', data.toString());
      client.end();
    });
    client.on('close', () => {
      console.log('连接已关闭');
    });
  

net.Socket()方法用于创建一个TCP客户端,client.connect()方法用于连接服务器。回调函数表示连接已经建立,我们可以通过client.write()方法向服务器发送数据。client.on('data')方法用于监听服务器发送过来的数据,client.on('close')方法用于监听连接关闭事件。

如何处理多个TCP连接?

    const net = require('net');
    const server = net.createServer();
    let sockets = [];
    
    server.on('connection', socket => {
      console.log('客户端已连接');
      sockets.push(socket);
      socket.on('data', data => {
        sockets.forEach(s => {
          if (s !== socket) {
            s.write(data);
          }
        });
      });
      socket.on('end', () => {
        const index = sockets.indexOf(socket);
        sockets.splice(index, 1);
      });
    });
    
    server.listen(8080);
  

我们可以使用一个数组来存储所有连接上来的socket。每当有新连接时,我们将socket添加到这个数组里。当socket向服务器发送数据时,我们遍历这个数组,并将数据发送给所有socket,除了发送者本身。当某个socket关闭连接时,我们从数组里移除它。

总结:Node中的net模块提供了一些高级函数来管理网络连接和套接字。我们可以使用net.createServer()方法创建TCP服务器,使用net.Socket()方法创建TCP客户端。我们可以使用数组来存储多个连接的socket,并使用它们来实现一些复杂的网络应用程序。