예제 #1
0
        public void TestDefragmentation()
        {
            var rng = new RNGCryptoServiceProvider();

            for (int bsize = 4; bsize < 50; bsize++)
            { //Use diffrent buffer sizes
                var pd = new PacketDefragmenter(bsize);

                for (int i = 0; i < 150; i++)
                {
                    //checking that PacketDefragmenter works past the first packet and with diffrent size data
                    byte[] received = null;
                    var    data     = new byte[i];
                    RNG.GetNonZeroBytes(data);
                    var packet = BitConverter.GetBytes(data.Length).Concat(data).ToArray();

                    using (var networkSimulator = new MemoryStream(packet))
                    {
                        while (received == null)
                        {
                            received = pd.Process(networkSimulator.Read(pd.ReceveBuffer, pd.BufferIndex, pd.BytesToReceve));
                        }
                    }
                    CollectionAssert.AreEqual(data, received);
                }
            }
        }
예제 #2
0
        public InternalSyncIOConnectedClient(Socket s, Packager p, int bufferSize)
        {
            if (s == null)
            {
                throw new Exception("Socket not valid.");
            }

            NetworkSocket = s;
            Packager      = p;
            Defragger     = new PacketDefragmenter(bufferSize);
        }
예제 #3
0
 public InternalSecureSocketConnectedClient(Socket s, Packager p, int bufferSize = 1024 * 5)
 {
     NetworkSocket = s ?? throw new Exception("Socket not valid.");
     Packager      = p;
     _defragger    = new PacketDefragmenter(bufferSize);
 }