Node.js net模块详解(含类、方法、事件)
Node.js 的 net 模块提供了基于 TCP 或 IPC 的网络通信能力,用于创建服务器和客户端。以下是 net 模块的核心 API 详解,包含类、方法、事件及示例。
1. 模块引入
2. 核心类与方法
2.1 net.Server 类
用于创建 TCP 或 IPC 服务器。
方法
server.listen(port[, host][, backlog][, callback])
监听指定端口和主机。
port: 端口号(若为 IPC 服务器则忽略)。host: 主机地址(默认'localhost')。backlog: 最大等待连接队列长度(默认由系统决定)。callback: 监听成功后的回调(等效于监听'listening'事件)。
server.listen(path[, callback])
监听 IPC 路径(仅 Unix 系统支持)。
path: IPC 文件路径(如'/tmp/echo.sock')。
server.close([callback])
停止服务器接受新连接,关闭现有连接后触发回调。
server.address()
返回服务器绑定的地址信息({ port, address, family }),未监听时返回 null。
事件
'connection'
当有新客户端连接时触发,回调参数为 socket 对象。
'listening'
服务器开始监听时触发。
'close'
服务器关闭后触发。
'error'
发生错误时触发(如端口被占用)。
2.2 net.Socket 类
表示 TCP 或 IPC 的客户端或服务器端连接。
方法
socket.connect(port[, host][, connectListener])
连接到指定端口和主机。
port: 目标端口。host: 目标主机(默认'localhost')。connectListener: 连接成功后的回调(等效于监听'connect'事件)。
socket.write(data[, encoding][, callback])
发送数据到另一端。
data: 要发送的数据(Buffer或String)。encoding: 字符串编码(默认'utf8')。callback: 数据写入完成后的回调。
socket.end([data][, encoding])
半关闭连接(发送 FIN 包),可选发送最后一段数据。
socket.destroy()
强制销毁连接,触发 'close' 事件。
socket.pause() / socket.resume()
暂停/恢复接收数据(控制 'data' 事件触发)。
socket.setTimeout(timeout[, callback])
设置连接超时时间(毫秒),超时后触发回调并自动销毁连接。
socket.setNoDelay([noDelay])
禁用 Nagle 算法(noDelay=true),降低延迟,适用于高频小数据包场景。
属性
socket.localAddress/socket.localPort: 本地地址和端口。socket.remoteAddress/socket.remotePort: 远程地址和端口。socket.bytesRead/socket.bytesWritten: 读取/写入的字节数。
事件
'data'
接收到数据时触发,回调参数为 Buffer 或 String。
'connect'
连接成功建立时触发。
'end'
另一端发送 FIN 包(结束连接)时触发。
'close'
连接完全关闭后触发。
'timeout'
连接超时时触发(需配合 setTimeout 使用)。
'error'
发生错误时触发(如连接被重置)。
2.3 工具函数
net.createServer([options][, connectionListener])
快速创建服务器,等同于 new net.Server() + server.on('connection')。
net.connect(port[, host][, connectListener])
创建客户端并连接到服务器,返回 net.Socket 对象。
net.isIP(input)
判断输入是否为 IP 地址,返回 4(IPv4)、6(IPv6)或 0(无效)。
net.isIPv4(input) / net.isIPv6(input)
判断输入是否为 IPv4 或 IPv6 地址,返回布尔值。
3. 完整示例 TCP 服务器
TCP 客户端
4. 关键注意事项
- 错误处理:始终监听
'error'事件,避免进程崩溃。 - 数据流控制:使用
pause()和resume()管理大数据流。 - 连接超时:通过
setTimeout防止僵死连接。 - IPC 路径:Unix 系统下 IPC 需确保路径可写,Windows 不支持。
通过掌握这些 API,可以构建高效的 TCP 服务器和客户端,适用于实时通信、微服务等场景。
栏 目:JavaScript
下一篇:Vue项目中vue.config.js常用配置项详解
本文标题:Node.js net模块详解(含类、方法、事件)
本文地址:https://fushidao.cc/wangluobiancheng/23737.html
您可能感兴趣的文章
- 02-04javascript解码揭秘,JavaScript核心原理及高效编码技巧之谜?
- 02-04javascript电子书涵盖哪些编程技巧与实战案例,适合哪些开发者阅读?
- 02-04JavaScript如何高效操作javascript二维数组的元素和方法选择?
- 02-04JavaScript全局变量如何影响代码的模块化和性能优化?
- 02-04javascript赋值
- 02-04a标签javascript如何正确运用和优化?探讨技巧与最佳实践疑问长尾标题
- 02-04javascript设计
- 02-04JavaScript翻译中的常见难点和高效策略探讨?
- 02-04javascript变量名
- 02-04JavaScript隐藏技巧,揭秘30种不为人知的隐藏方法之谜?
阅读排行
推荐教程
- 02-01如何选择最适合你的JavaScript视频教程?
- 04-23JavaScript Array实例方法flat的实现
- 04-23Vue3使用v-if指令进行条件渲染的实例代码
- 04-23THREE.JS使用TransformControls对模型拖拽的代码实例
- 07-21JavaScript判断数据类型的四种方式总结
- 07-21基于vue3与supabase系统认证机制详解
- 07-22JavaScript随机数生成各种技巧及实例代码
- 07-21JavaScript检查变量类型的常用方法
- 04-23vue3+ts项目搭建的实现示例
- 07-21JavaScript双问号操作符(??)的惊人用法总结大全
