网络通信
网络模块实现了与仿真环境通信所需的各种 Socket 类,包括基础 Socket、JSON Socket 以及视频流 Socket。通常,这些类会被 SceneAPI 内部使用,无需直接调用。
异常类
Socket 基类
- class metacar.sockets.SocketBase(host: str, port: int)[源代码]
一个简单的 TCP 服务器基类,实现基于长度 + 内容格式的基本分包。 长度为 4 字节的无符号整数,使用网络字节序(大端序)。 仅支持单个客户端连接。
基础 Socket 提供了以下功能:
创建 TCP 服务器并监听连接
接受客户端连接
发送和接收带长度前缀的数据
关闭连接
JSON Socket
- class metacar.sockets.JsonSocket(host: str, port: int)[源代码]
基类:
SocketBase支持双向 JSON 通信的 Socket。
- recv()[源代码]
接收 JSON 数据。
- 返回:
接收到的 JSON 数据。
- 抛出:
ConnectionClosedError -- 当连接已关闭时抛出。
JSON Socket 在基础 Socket 的基础上提供了:
发送 Python 对象,自动转换为 JSON 并编码
接收 JSON 数据并自动解码为 Python 对象
视频流 Socket
- class metacar.sockets.StreamingSocket(host: str, port: int)[源代码]
基类:
SocketBase支持单向接收视频流的 Socket。
- recv()[源代码]
接收视频帧。
- 返回:
接收到的视频帧。
- 返回类型:
numpy.ndarray
- 抛出:
ConnectionClosedError -- 当连接已关闭时抛出。
视频流 Socket 在基础 Socket 的基础上提供了:
接收二进制图像数据并转换为 OpenCV 图像
返回的图像可直接用于图像处理和显示