Receiving UDP data from UDP Multicast channel

This commit is contained in:
Stedd 2023-10-21 19:38:39 +02:00
parent 421750f120
commit 0b09d473e4
1 changed files with 15 additions and 6 deletions

View File

@ -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 })
{