diff --git a/Scripts/UDPManager.cs b/Scripts/UDPManager.cs index 808f82b..0087b9a 100644 --- a/Scripts/UDPManager.cs +++ b/Scripts/UDPManager.cs @@ -9,15 +9,24 @@ namespace GameDev.UDP public class UDPManager : MonoBehaviour { [SerializeField] private int _port; + [SerializeField] private string _ipAddress; [SerializeField] private bool listen; + [Header("State")] + [SerializeField] private byte _watchdog; + private UdpClient UdpClient { get; set; } private Thread _receiveThread; - private void Start() + private IPAddress _ipAddressParsed; + + private void OnEnable() { + _ipAddressParsed = IPAddress.Parse(_ipAddress); + UdpClient = new(_port); + UdpClient.JoinMulticastGroup(_ipAddressParsed); _receiveThread = new(ReceiveData); _receiveThread.IsBackground = true; _receiveThread.Start(); @@ -25,15 +34,15 @@ namespace GameDev.UDP private void ReceiveData() { + IPEndPoint ipEndPoint = new(_ipAddressParsed, _port); + while (true) { try { - IPEndPoint anyIP = new(IPAddress.Any, _port); - var data = UdpClient.Receive(ref anyIP); + var data = UdpClient.Receive(ref ipEndPoint); - var text = Encoding.UTF8.GetString(data); - Debug.Log($"Received: {text}"); + _watchdog = data[0]; } catch (SocketException e) { @@ -42,7 +51,7 @@ namespace GameDev.UDP } } - private void OnApplicationQuit() + private void OnDisable() { if (_receiveThread is { IsAlive: true }) {