AnimalSimulation/Assets/Scripts/BroadcastServer.cs

57 lines
1.3 KiB
C#

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