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