import socket import json import time def send_request(req_data, silent=False): try: client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(("127.0.0.1", 8080)) # 发送 UTF-8 编码的 JSON 请求 client.sendall(json.dumps(req_data).encode('utf-8')) # 接收并解码结果 response = client.recv(4096) if not silent: print(">>> 收到回复:") print(json.dumps(json.loads(response.decode('utf-8')), indent=2, ensure_ascii=False)) print("-" * 50) client.close() except Exception as e: print(f"连接失败: {e}") if __name__ == "__main__": print("=== 测试 1: 验证 C++ DLL 工具调用 ===") request_call = { "jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": { "name": "draw_circle_cpp", "arguments": { "cx": 2000.0, "cy": 2000.0, "r": 500.0 } } } send_request(request_call) # 稍作停顿,方便观察 CAD 屏幕 time.sleep(1) print("\n=== 测试 2: C++ 并发写入压力测试 (生成10个同心圆) ===") for i in range(10): radius = 100.0 + i * 50.0 req = { "jsonrpc": "2.0", "id": 100 + i, "method": "tools/call", "params": { "name": "draw_circle_cpp", "arguments": { "cx": 4000.0, "cy": 2000.0, "r": radius } } } # 连续快速发送,不打印详细返回以模拟极限并发 send_request(req, silent=True) print(">>> 并发指令发送完毕,请检查 CAD 屏幕。")