I've been developing a unity script for a few days now (completely new to unity/C#, but I've been programming for around 10 years so learning wasn't too difficult, but I could be making a simple mistake). The script itself has a flow, where ideally I'd like to continuously receive UDP packets over the lifetime of the application. I'm currently using UdpClient from the C# std lib, but the .Receive method seems to only ever receive a single packet on startup, and just hangs for the rest of the time. I have verified that there is infact a continuous stream of packets, through another nodejs application which simply prints the packets to the console. These packets are sent at 150 hertz, so I'm not sure if I'm overloading it, but I've even tried a Thread.Sleep(1000) and it still happens. It also seems to only be receiving the packet at the very start, so e.g. if I do a Thread.Sleep before the first .Receive call, it won't receive anything. In the screenshot below, the output will be the BEFORE RECEIVE log gets printed twice, with the RECEIVED ... log in between those two. Another thing I've noticed is that it sometimes doesn't receive anything at all, but this happens very inconsistently (possibly due to a race condition). I'm completely stumped as to why this is happening and why it's not working. I've tried many different ways, e.g. a BeginReceive/EndReceive pair, ReceiveAsync, but nothing has worked and it has always led to the same issue. Does anyone have any suggestions for alternative solutions/ideas as to why this isn't working?