Skip to content

通信服务接口

介绍

通信服务接口:提供任务脚本中的网络数据传输功能,支持 TCP(可靠传输)和 UDP(实时传输)两种协议,所有消息使用 UTF-8 编码。

端口限制:所有通信端口必须在 50000–51000 范围内,超出范围将抛出 ValueError

功能Python
TCP 客户端连接和通信
TCP 服务器监听和响应
UDP 发送和接收
UDP 广播

TCP 客户端

Python接口

create_tcp_client(ip, port)

功能说明
创建并连接到指定地址的 TCP 服务器,返回 TCPClient 实例。推荐使用 with 语句管理连接生命周期,确保自动断开。

参数说明

参数名类型必填/默认值说明
ipstr必填服务器 IP 地址。
portint必填服务器端口,必须在 50000–51000 范围内。

返回值

类型说明
TCPClientTCP 客户端实例。支持 send(message)receive(timeout)disconnect() 方法。

调用示例

python
from daystar_api.tcp_client import create_tcp_client

# 使用 with 语句(推荐)
with create_tcp_client("192.168.1.100", 50001) as client:
    client.send("Hello Server")
    response = client.receive(timeout=5.0)
    if response:
        print(f"收到回复: {response}")

TCPClient 主要方法:

方法说明
send(message: str)发送消息,自动添加 \x03 结束符。
receive(timeout: float = None)接收消息,超时返回 None(不抛异常)。
disconnect()断开连接。

TCP 服务器

Python接口

create_tcp_server(port, message_callback=None)

功能说明
创建 TCP 服务器并在后台监听连接,返回 TCPServer 实例。服务器在后台线程中运行,主脚本继续执行。

参数说明

参数名类型必填/默认值说明
portint必填监听端口,必须在 70000–71000 范围内。
message_callbackcallable默认: None收到消息时的回调函数,签名为 callback(msg: str, client_addr: tuple),返回值将作为回复发送给客户端。

返回值

类型说明
TCPServerTCP 服务器实例。支持 send(message, client)send_to_all(message)get_connected_clients()stop() 方法。

调用示例

python
from daystar_api.tcp_server import create_tcp_server

def handle_message(msg, client_addr):
    print(f"收到来自 {client_addr} 的消息: {msg}")
    return f"已收到: {msg}"  # 返回值作为回复

server = create_tcp_server(50001, message_callback=handle_message)

# 主动推送消息给所有客户端
server.send_to_all("广播消息")

# 停止服务器
server.stop()

TCPServer 主要方法:

方法说明
send(message: str, client)向指定客户端发送消息。
send_to_all(message: str)向所有已连接客户端广播。
get_connected_clients()返回已连接的客户端列表。
stop()停止服务器并释放端口。

UDP Socket

Python接口

create_udp_socket(port)

功能说明
创建 UDP Socket,可同时用于发送和接收。推荐使用 with 语句管理资源。

参数说明

参数名类型必填/默认值说明
portint必填本地监听端口,必须在 70000–71000 范围内。

返回值

类型说明
UDPSocketUDP Socket 实例。支持 send(message, addr)receive(timeout)enable_broadcast() 方法。

调用示例

python
from daystar_api.udp_socket import create_udp_socket

# 接收方
with create_udp_socket(50002) as receiver:
    result = receiver.receive(timeout=10.0)
    if result:
        message, sender_addr = result
        print(f"收到: {message},来自: {sender_addr}")
        receiver.send(f"回复: {message}", sender_addr)

# 发送方
with create_udp_socket(70001) as sender:
    sender.send("Hello UDP", ("192.168.1.100", 50002))

# UDP 广播
with create_udp_socket(70001) as broadcaster:
    broadcaster.enable_broadcast()
    broadcaster.send("广播消息", ("255.255.255.255", 50002))

UDPSocket 主要方法:

方法说明
send(message: str, addr: tuple)向指定地址发送消息,addr(ip, port) 元组。
receive(timeout: float = None)接收消息,返回 (message, sender_addr) 或超时返回 None
enable_broadcast()启用广播模式,允许发送到广播地址。