using UnityEngine; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; public class BroadcastServer : MonoBehaviour { private UdpClient udpBroadcaster; private Thread broadcastThread; private bool isRunning = true; void Start() { udpBroadcaster = new UdpClient(); udpBroadcaster.EnableBroadcast = true; broadcastThread = new Thread(BroadcastIP); broadcastThread.Start(); Debug.Log("ÏÔʾ¶ËÕýÔڹ㲥IP..."); } private void BroadcastIP() { IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, 9999); string localIP = GetLocalIPAddress(); while (isRunning) { byte[] data = Encoding.UTF8.GetBytes(localIP); udpBroadcaster.Send(data, data.Length, endPoint); Thread.Sleep(1000); } } private string GetLocalIPAddress() { string localIP = "127.0.0.1"; foreach (var ip in Dns.GetHostEntry(Dns.GetHostName()).AddressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { localIP = ip.ToString(); break; } } return localIP; } private void OnApplicationQuit() { isRunning = false; udpBroadcaster?.Close(); } }