net 网络通信库
net 网络通信库
功能
net 提供 Web 服务适配、TCP、UDP、WebSocket、DNS 解析和本机网络信息能力。既可以使用 net.listen() 短写,也可以使用 net().listen()。
API 列表
| API | 说明 |
|---|---|
| net.listen | 启动 Web、TCP、UDP 或 WebSocket 监听服务。 |
| net.connect | 建立 TCP、UDP 或 WebSocket 客户端连接。 |
| net.resolve | 解析主机名并返回去重后的 IP 地址数组。 |
| net.interfaces | 读取本机网络接口信息。 |
| net.local_ip | 读取默认本机 IP。 |
示例
ips = net.resolve('localhost') result = type(ips) // 输出:Array print result
注意事项
- 所有协议类型字段使用小写字符串:web、tcp、udp、ws。
- 后台网络服务会让 VM 等待事件并分发回调。
- TCP、UDP、WebSocket 后台 I/O 使用共享 Tokio runtime;脚本 API 仍保持同步调用表面。
- TCP、UDP、WebSocket 监听配置支持
binary: true,on_message 回调会直接收到 Bytes,避免二进制报文提前按字符串转换。 - 网络事件队列是有界队列,默认
BT_NET_EVENT_QUEUE=4096。队列满时不会无限堆积内存;TCP/WebSocket 消息事件会触发连接关闭,UDP 报文会被丢弃,并可通过BT.stats().net.event_queue_rejected观察。 - 资源上限可通过
BT_NET_CONNECTION_LIMIT、BT_NET_MESSAGE_LIMIT、BT_NET_WRITE_QUEUE、BT_NET_IDLE_TTL_MS调整,配置错误会在第一次使用 net 能力时报错。 - TCP、UDP、WebSocket 的常见错误会输出中文标准化信息,包括端口占用、权限不足、连接拒绝/重置、握手失败、写队列满和消息超限。
-
examples/net-stress-*.bt提供 TCP、UDP、WebSocket 压测脚本;需要验证队列满或消息超限时,可在启动前调低BT_NET_EVENT_QUEUE、BT_NET_WRITE_QUEUE或BT_NET_MESSAGE_LIMIT。