private void ReceiveFromCallback(IAsyncResult ar) { try { int count = clientSocket.EndReceiveFrom(ar, ref remoteEP); OnAsyncReceive?.Invoke(udpAsyncReceive, count); clientSocket.BeginReceiveFrom(udpAsyncReceive.Buffer, udpAsyncReceive.Offset, udpAsyncReceive.Size, SocketFlags.None, ref remoteEP, ReceiveFromCallback, null); } catch { Disconnect(); } }
private void ReceiveFromUdp() { while (true) { try { int count = serverSocket.ReceiveFrom(udpAsyncReceive.Buffer, udpAsyncReceive.Offset, udpAsyncReceive.Size, SocketFlags.None, ref remoteEP); if (count > 0 && !clientDict.ContainsKey(remoteEP)) { Client client = new Client(serverSocket, remoteEP); AddClient(client); } OnAsyncReceive?.Invoke(remoteEP, udpAsyncReceive, count); } catch { } } }