net 常见问题
net 常见问题
net.listen 返回什么
按 type 返回不同句柄:
| type | 返回类型 | 公共字段 | 公共方法 |
|---|---|---|---|
| web | WebServer | addr、type | close() |
| tcp | TcpServer | addr、type | close() |
| udp | UdpSocket | addr、type | send()、close() |
| ws | WsServer | addr、type | close() |
addr 是实际监听地址,type 是服务类型字符串,close() 用于关闭服务或 socket。
net.connect 返回什么
按 type 返回不同连接句柄:
| type | 返回类型 | 字段 | 常用方法 |
|---|---|---|---|
| tcp | TcpClient | addr、type | write()、send()、read()、close() |
| udp | UdpSocket | addr、type | send()、close() |
| ws | WsSocket | addr、type | send()、write()、close()、on_message()、on_close()、on_error() |
TCP 和 UDP 使用 host、port 配置连接目标;WebSocket 使用 url 配置完整连接地址。
回调字段名称
事件回调统一使用 snake_case:on_connect、on_message、on_close、on_error。
端口占用
bind 端口被占用时会抛出错误。开发测试可使用 127.0.0.1:0 让操作系统分配空闲端口。
队列满会怎样
TCP、UDP、WebSocket 后台事件队列有固定上限,默认 4096。队列满时不会无限占用内存:TCP 和 WebSocket 会关闭对应连接,UDP 会丢弃当前报文。可通过 BT.stats().net.event_queue_rejected 查看发生次数。
错误信息
TCP、UDP、WebSocket 的用户可见错误会尽量使用统一中文格式。常见类型包括端口已被占用、权限不足、地址不可用、连接被拒绝、连接被对端重置、握手失败、写队列已满和消息大小超过上限。
压测脚本
examples/ 下提供 net-stress-tcp-server.bt / net-stress-tcp-client.bt、net-stress-udp-server.bt / net-stress-udp-client.bt、net-stress-ws-server.bt / net-stress-ws-client.bt。先启动对应 server,再启动 client。需要压低资源边界时,在启动进程前设置 BT_NET_EVENT_QUEUE、BT_NET_WRITE_QUEUE 或 BT_NET_MESSAGE_LIMIT。
二进制消息怎么接收
TCP、UDP、WebSocket 监听配置中设置 binary: true 后,on_message 回调的消息参数会返回 Bytes。TCP 客户端同步读取可以使用 read_bytes()。