Я пытаюсь создать игру с использованием сокетов и UDP, я создал серверный класс, где при вызове метода start я запускаю задачу с помощью al oop для получения пакетов и их обработки, я использовал Socket.ReceiveFrom(packet, ref sender);
внутри блок try catch со всем внутри некоторое время l oop, сначала я забыл добавить Socket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25000));
, поэтому я получил все oop исключений связывания, что нормально, но теперь, когда я добавил эту строку, моя программа волнуется, см. код ниже
public class UDPServer
{
public UDPServer()
{
Socket = new Socket(AddressFamily.InterNetwork ,SocketType.Dgram,ProtocolType.Udp);
Socket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25000));
}
public void Start()
{
IsBound = true;
try
{
Task.Run(NetworkLoop);
}
catch (Exception e)
{
throw e;
}
}
private void NetworkLoop()
{
EndPoint sender = new IPEndPoint(IPAddress.Any, 0);
byte[] packet = new byte[1];
int dataSize = 0;
while (IsBound)
{
try
{
dataSize = Socket.ReceiveFrom(packet, ref sender);
Console.WriteLine(sender.ToString() + " with " + packet.Length + " of " + dataSize);
}
catch (Exception e)
{
Console.WriteLine("Reading exeption : " + e.Message);
}
}
}
}
Я отладил это, и теперь кажется, что при пошаговом переходе к строке dataSize = Socket.ReceiveFrom(packet, ref sender);
он просто выходит из блока try catch без каких-либо исключений и прерывает l oop. ..
Это нормальное поведение?