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); } } }
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); }
public InternalSecureSocketConnectedClient(Socket s, Packager p, int bufferSize = 1024 * 5) { NetworkSocket = s ?? throw new Exception("Socket not valid."); Packager = p; _defragger = new PacketDefragmenter(bufferSize); }