python unity通讯数据解析_unity zmq-CSDN博客
Unity在服务器上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;public class RecvPython : MonoBehaviour
{// Update is called once per framevoid Update(){}private Thread serverThread;private TcpListener tcpListener;private bool isRunning = false;public int port = 65432; // 服务器端口void Start(){// 启动服务器StartServer();}void OnDestroy(){// 停止服务器StopServer();}void StartServer(){isRunning = true;serverThread = new Thread(ListenForClients);serverThread.Start();Debug.Log($"服务器已启动,正在监听端口 {port}...");}void StopServer(){isRunning = false;if (tcpListener != null){tcpListener.Stop();}if (serverThread != null && serverThread.IsAlive){serverThread.Join(); // 等待线程结束}Debug.Log("服务器已停止");}void ListenForClients(){try{// 创建 TCP 监听器tcpListener = new TcpListener(IPAddress.Any, port);tcpListener.Start();while (isRunning){// 接受客户端连接TcpClient client = tcpListener.AcceptTcpClient();Debug.Log("客户端已连接!");// 为每个客户端创建一个线程Thread clientThread = new Thread(HandleClient);clientThread.Start(client);}}catch (Exception ex){Debug.LogError($"服务器错误: {ex.Message}");}}void HandleClient(object obj){TcpClient client = (TcpClient)obj;NetworkStream stream = client.GetStream();byte[] buffer = new byte[1024];int bytesRead;try{while (isRunning && (bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0){// 接收客户端数据string receivedData = Encoding.UTF8.GetString(buffer, 0, bytesRead);Debug.Log($"收到数据: {receivedData}");// 发送响应string response = "Hello from Unity Server";byte[] responseData = Encoding.UTF8.GetBytes(response);stream.Write(responseData, 0, responseData.Length);Debug.Log("已发送响应");}}catch (Exception ex){Debug.LogError($"客户端处理错误: {ex.Message}");}finally{// 关闭连接client.Close();Debug.Log("客户端已断开连接");}}}
Python 客服端
import socket# 先运行unity
def tcp_client(host='127.0.0.1', port=65432):with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:client_socket.connect((host, port))client_socket.sendall(b"Hello from client")data = client_socket.recv(1024)print(f"收到响应: {data.decode()}")tcp_client()