• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Node.js net模块详解(含类、方法、事件)

    发布者: 网神之王 | 发布时间: 2025-6-16 07:35| 查看数: 134| 评论数: 0|帖子模式

    Node.js 的
    1. net
    复制代码
    模块提供了基于 TCP 或 IPC 的网络通信能力,用于创建服务器和客户端。以下是
    1. net
    复制代码
    模块的核心 API 详解,包含类、方法、事件及示例。

    1. 模块引入
    1. const net = require('net');
    复制代码
    2. 核心类与方法


    2.1 net.Server 类

    用于创建 TCP 或 IPC 服务器。
    方法
    1. server.listen(port[, host][, backlog][, callback])
    复制代码
    监听指定端口和主机。

      1. port
      复制代码
      : 端口号(若为 IPC 服务器则忽略)。
      1. host
      复制代码
      : 主机地址(默认
      1. 'localhost'
      复制代码
      )。
      1. backlog
      复制代码
      : 最大等待连接队列长度(默认由系统决定)。
      1. callback
      复制代码
      : 监听成功后的回调(等效于监听
      1. 'listening'
      复制代码
      事件)。
    1. const server = net.createServer();
    2. server.listen(3000, '127.0.0.1', () => {
    3.   console.log('Server listening on port 3000');
    4. });
    复制代码
    1. server.listen(path[, callback])
    复制代码
    监听 IPC 路径(仅 Unix 系统支持)。

      1. path
      复制代码
      : IPC 文件路径(如
      1. '/tmp/echo.sock'
      复制代码
      )。
    1. server.close([callback])
    复制代码
    停止服务器接受新连接,关闭现有连接后触发回调。
    1. server.address()
    复制代码
    返回服务器绑定的地址信息(
    1. { port, address, family }
    复制代码
    ),未监听时返回
    1. null
    复制代码

    事件
    1. 'connection'
    复制代码
    当有新客户端连接时触发,回调参数为
    1. socket
    复制代码
    对象。
    1. server.on('connection', (socket) => {
    2.   console.log('New client connected');
    3. });
    复制代码
    1. 'listening'
    复制代码
    服务器开始监听时触发。
    1. 'close'
    复制代码
    服务器关闭后触发。
    1. 'error'
    复制代码
    发生错误时触发(如端口被占用)。

    2.2 net.Socket 类

    表示 TCP 或 IPC 的客户端或服务器端连接。
    方法
    1. socket.connect(port[, host][, connectListener])
    复制代码
    连接到指定端口和主机。

      1. port
      复制代码
      : 目标端口。
      1. host
      复制代码
      : 目标主机(默认
      1. 'localhost'
      复制代码
      )。
      1. connectListener
      复制代码
      : 连接成功后的回调(等效于监听
      1. 'connect'
      复制代码
      事件)。
    1. const client = new net.Socket();
    2. client.connect(3000, '127.0.0.1', () => {
    3.   console.log('Connected to server');
    4. });
    复制代码
    1. socket.write(data[, encoding][, callback])
    复制代码
    发送数据到另一端。

      1. data
      复制代码
      : 要发送的数据(
      1. Buffer
      复制代码
      1. String
      复制代码
      )。
      1. encoding
      复制代码
      : 字符串编码(默认
      1. 'utf8'
      复制代码
      )。
      1. callback
      复制代码
      : 数据写入完成后的回调。
    1. socket.end([data][, encoding])
    复制代码
    半关闭连接(发送 FIN 包),可选发送最后一段数据。
    1. socket.destroy()
    复制代码
    强制销毁连接,触发
    1. 'close'
    复制代码
    事件。
    1. socket.pause()
    复制代码
    /
    1. socket.resume()
    复制代码
    暂停/恢复接收数据(控制
    1. 'data'
    复制代码
    事件触发)。
    1. socket.setTimeout(timeout[, callback])
    复制代码
    设置连接超时时间(毫秒),超时后触发回调并自动销毁连接。
    1. socket.setTimeout(3000, () => {
    2.   console.log('Socket timed out');
    3.   socket.destroy();
    4. });
    复制代码
    1. socket.setNoDelay([noDelay])
    复制代码
    禁用 Nagle 算法(
    1. noDelay=true
    复制代码
    ),降低延迟,适用于高频小数据包场景。
    属性

      1. socket.localAddress
      复制代码
      /
      1. socket.localPort
      复制代码
      : 本地地址和端口。
      1. socket.remoteAddress
      复制代码
      /
      1. socket.remotePort
      复制代码
      : 远程地址和端口。
      1. socket.bytesRead
      复制代码
      /
      1. socket.bytesWritten
      复制代码
      : 读取/写入的字节数。
    事件
    1. 'data'
    复制代码
    接收到数据时触发,回调参数为
    1. Buffer
    复制代码
    1. String
    复制代码
    1. socket.on('data', (data) => {
    2.   console.log('Received:', data.toString());
    3. });
    复制代码
    1. 'connect'
    复制代码
    连接成功建立时触发。
    1. 'end'
    复制代码
    另一端发送 FIN 包(结束连接)时触发。
    1. 'close'
    复制代码
    连接完全关闭后触发。
    1. 'timeout'
    复制代码
    连接超时时触发(需配合
    1. setTimeout
    复制代码
    使用)。
    1. 'error'
    复制代码
    发生错误时触发(如连接被重置)。

    2.3 工具函数
    1. net.createServer([options][, connectionListener])
    复制代码
    快速创建服务器,等同于
    1. new net.Server()
    复制代码
    +
    1. server.on('connection')
    复制代码
    1. const server = net.createServer((socket) => {
    2.   socket.write('Welcome to the server!');
    3. });
    复制代码
    1. net.connect(port[, host][, connectListener])
    复制代码
    创建客户端并连接到服务器,返回
    1. net.Socket
    复制代码
    对象。
    1. const client = net.connect(3000, 'localhost', () => {
    2.   client.write('Hello from client!');
    3. });
    复制代码
    1. net.isIP(input)
    复制代码
    判断输入是否为 IP 地址,返回
    1. 4
    复制代码
    (IPv4)、
    1. 6
    复制代码
    (IPv6)或
    1. 0
    复制代码
    (无效)。
    1. net.isIP('192.168.1.1'); // 4
    2. net.isIP('::1');         // 6
    3. net.isIP('hello');       // 0
    复制代码
    1. net.isIPv4(input)
    复制代码
    /
    1. net.isIPv6(input)
    复制代码
    判断输入是否为 IPv4 或 IPv6 地址,返回布尔值。

    3. 完整示例 TCP 服务器
    1. const net = require('net');
    2. const server = net.createServer((socket) => {
    3.   console.log('Client connected');
    4.   socket.on('data', (data) => {
    5.     console.log('Received:', data.toString());
    6.     socket.write('Echo: ' + data);
    7.   });
    8.   socket.on('end', () => {
    9.     console.log('Client disconnected');
    10.   });
    11. });
    12. server.listen(3000, '127.0.0.1', () => {
    13.   console.log('Server listening on port 3000');
    14. });
    复制代码
    TCP 客户端
    1. const net = require('net');
    2. const client = net.connect(3000, '127.0.0.1', () => {
    3.   client.write('Hello Server!');
    4. });
    5. client.on('data', (data) => {
    6.   console.log('Server response:', data.toString());
    7.   client.end();
    8. });
    9. client.on('end', () => {
    10.   console.log('Disconnected from server');
    11. });
    复制代码
    4. 关键注意事项


    • 错误处理:始终监听
      1. 'error'
      复制代码
      事件,避免进程崩溃。
    • 数据流控制:使用
      1. pause()
      复制代码
      1. resume()
      复制代码
      管理大数据流。
    • 连接超时:通过
      1. setTimeout
      复制代码
      防止僵死连接。
    • IPC 路径:Unix 系统下 IPC 需确保路径可写,Windows 不支持。
    通过掌握这些 API,可以构建高效的 TCP 服务器和客户端,适用于实时通信、微服务等场景。
    到此这篇关于Node.js net模块详解的文章就介绍到这了,更多相关Node.js net模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/javascript/339608z2o.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表