using UnityEngine; using UnityEngine.UI; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; public class TouchClient : MonoBehaviour { private TcpClient client; private NetworkStream stream; private bool isConnected = false; private UdpClient udpListener; private Thread udpThread; void Start() { udpListener = new UdpClient(9999); udpThread = new Thread(ListenForBroadcast); udpThread.Start(); Debug.Log("触摸端等待显示端广播..."); } private void ListenForBroadcast() { IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 9999); while (!isConnected) { byte[] data = udpListener.Receive(ref endPoint); string serverIp = Encoding.UTF8.GetString(data); Debug.Log("发现显示端IP: " + serverIp); ConnectToServer(serverIp, 8888); } } private void ConnectToServer(string ip, int port) { try { client = new TcpClient(); client.Connect(ip, port); stream = client.GetStream(); isConnected = true; Debug.Log("触摸端已连接到显示端: " + ip); } catch { Debug.Log("连接显示端失败"); } } void SendMessageToServer(string msg) { if (isConnected && stream != null) { byte[] data = Encoding.UTF8.GetBytes(msg); stream.Write(data, 0, data.Length); Debug.Log("发送指令: " + msg); } } private void OnApplicationQuit() { udpListener?.Close(); stream?.Close(); client?.Close(); } }