public RdpeudpSocket(TransportMode mode, IPEndPoint remoteEp, bool autohandle, RdpeudpSocketSender sender)
{
this.TransMode = mode;
this.SocketConfig = new RdpeudpSocketConfig();
this.AutoHandle = autohandle;
this.connected = false;
remoteEndPoint = remoteEp;
// Initial highestAckNumber as 0 because every hihestAckNumber will compare with Sequence Number of coming packet, and set as the bigger one.
SnSourceAck = 0;
URemoteAdvisedWindowSize = SocketConfig.initialWindowSize;
USendWindowSize = SocketConfig.initialWindowSize;
UReceiveWindowSize = SocketConfig.initialWindowSize;
UUpStreamMtu = SocketConfig.initialStreamMtu;
UDownStreamMtu = SocketConfig.initialStreamMtu;
OutSnAckOfAcksSeqNum = SocketConfig.initialAcksPosition;
InSnAckOfAcksSeqNum = SocketConfig.initialAcksPosition;
ReceiveWindowStartPosition = SocketConfig.initialAcksPosition;
RTT = new TimeSpan(0, 0, 0, 0, this.SocketConfig.DelayAckTime);
packetSender = sender;
}