74 lines
1.7 KiB
C#
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();
|
|
}
|
|
}
|