net 常见问题

net 常见问题

net 常见问题

net.listen 返回什么

按 type 返回不同句柄:

type返回类型公共字段公共方法
webWebServeraddr、typeclose()
tcpTcpServeraddr、typeclose()
udpUdpSocketaddr、typesend()、close()
wsWsServeraddr、typeclose()

addr 是实际监听地址,type 是服务类型字符串,close() 用于关闭服务或 socket。

net.connect 返回什么

按 type 返回不同连接句柄:

type返回类型字段常用方法
tcpTcpClientaddr、typewrite()、send()、read()、close()
udpUdpSocketaddr、typesend()、close()
wsWsSocketaddr、typesend()、write()、close()、on_message()、on_close()、on_error()

TCP 和 UDP 使用 hostport 配置连接目标;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.btnet-stress-udp-server.bt / net-stress-udp-client.btnet-stress-ws-server.bt / net-stress-ws-client.bt。先启动对应 server,再启动 client。需要压低资源边界时,在启动进程前设置 BT_NET_EVENT_QUEUEBT_NET_WRITE_QUEUEBT_NET_MESSAGE_LIMIT

二进制消息怎么接收

TCP、UDP、WebSocket 监听配置中设置 binary: true 后,on_message 回调的消息参数会返回 Bytes。TCP 客户端同步读取可以使用 read_bytes()