/// <summary> /// Receive Loop /// </summary> private void ReceiveLoop() { TimeSpan timeout; object remoteEndpoint; StackPacket receivedPacket; timeout = new TimeSpan(0, 0, 10); // 100 milliseconds. while (running) { // An infinite loop to receive packet from transport stack. try { receivedPacket = udpTransport.ExpectPacket(timeout, localEndPoint, out remoteEndpoint); if (serverSocketDic.ContainsKey(remoteEndpoint as IPEndPoint)) { serverSocketDic[remoteEndpoint as IPEndPoint].ReceivePacket(receivedPacket); } else // If the packet belong to no RDPEUDP socket, try to Accept as a new RDPEUDP socket. { StackPacketInfo packetinfo = new StackPacketInfo(localEndPoint, remoteEndpoint, receivedPacket); lock (this.unprocessedPacketBuffer) { unprocessedPacketBuffer.Add(packetinfo); } // ETW Provider Dump Message byte[] packetBytes = receivedPacket.ToBytes(); string messageName = "RDPEUDP:ReceivedPDU"; ExtendedLogger.DumpMessage(messageName, RdpeudpSocket.DumpLevel_LayerTLS, typeof(RdpeudpPacket).Name, packetBytes); } } catch (TimeoutException) { } Thread.Sleep(RdpeudpSocketConfig.ReceivingInterval); } }
/// <summary> /// Receive Loop /// </summary> private void ReceiveLoop() { try { TimeSpan timeout; object remoteEndpoint; StackPacket receivedPacket; timeout = new TimeSpan(0, 0, 0, 0, 100); // 100 milliseconds. // Check whether cancellation is requested before entering each receive loop. while (!receiveThreadCancellationTokenSource.IsCancellationRequested) { try { receivedPacket = udpTransport.ExpectPacket(timeout, out remoteEndpoint); socket.ReceivePacket(receivedPacket); } catch (TimeoutException) { } } } catch (Exception ex) { UnhandledExceptionReceived?.Invoke(ex); } }
/// <summary> /// Receive Loop /// </summary> private void ReceiveLoop() { try { TimeSpan timeout; object remoteEndpoint; StackPacket receivedPacket; timeout = new TimeSpan(0, 0, 0, 0, 100); // 100 milliseconds. // Check whether cancellation is requested before entering each receive loop. while (!receiveThreadCancellationTokenSource.IsCancellationRequested) { try { receivedPacket = udpTransport.ExpectPacket(timeout, localEndPoint, out remoteEndpoint); if (serverSocketDic.ContainsKey(remoteEndpoint as IPEndPoint)) { serverSocketDic[remoteEndpoint as IPEndPoint].ReceivePacket(receivedPacket); } else // If the packet belong to no RDPEUDP socket, try to Accept as a new RDPEUDP socket. { StackPacketInfo packetinfo = new StackPacketInfo(localEndPoint, remoteEndpoint, receivedPacket); lock (this.unprocessedPacketBuffer) { unprocessedPacketBuffer.Add(packetinfo); } // ETW Provider Dump Message // byte[] packetBytes = receivedPacket.ToBytes(); // string messageName = "RDPEUDP:ReceivedPDU"; // ExtendedLogger.DumpMessage(messageName, RdpeudpSocket.DumpLevel_LayerTLS, typeof(RdpeudpPacket).Name, packetBytes); } } catch (TimeoutException) { } } } catch (Exception ex) { UnhandledExceptionReceived?.Invoke(ex); } }
/// <summary> /// Receive Loop /// </summary> private void ReceiveLoop() { TimeSpan timeout; object remoteEndpoint; StackPacket receivedPacket; timeout = new TimeSpan(0, 0, 0, 0, 100); // 100 milliseconds. while (running) { // An infinite loop to receive packet from transport stack. try { receivedPacket = udpTransport.ExpectPacket(timeout, out remoteEndpoint); socket.ReceivePacket(receivedPacket); } catch (TimeoutException) { } Thread.Sleep(RdpeudpSocketConfig.ReceivingInterval); } }