AnimalSimulation/Assets/Scripts/TouchClient.cs

74 lines
1.7 KiB
C#

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();
}
}