예제 #1
0
        public void ThreadSockReceive()
        {
            _sock.Listen(23476);
            Assert.AreEqual(IPAddress.Any, _sock.LocalEndPoint.Address);
            Assert.AreEqual(23476, _sock.LocalEndPoint.Port);

            UdpClient udpClient = new UdpClient();

            udpClient.Connect(IPAddress.Loopback, 23476);
            udpClient.Send(BitConverter.GetBytes(123456789), 4);

            var receivedPacket = Utils.WaitOnReceive(_sock);

            Assert.AreEqual(123456789, BitConverter.ToInt32(receivedPacket.Buffer, 0));
            Assert.AreEqual(0, receivedPacket.Offset);
            Assert.AreEqual(4, receivedPacket.Length);
            Assert.AreEqual(2, _bufferPool.Rented.Count);
            Assert.AreEqual(0, _bufferPool.Returned.Count);
        }
예제 #2
0
        public void SendMoreThanMTUDroppedOnReceiveByThreadSock()
        {
            var bufferPool = new ByteBufferPool();
            var sock       = new ThreadSock(bufferPool, AddressFamily.InterNetwork, new LoggerStub());

            sock.Listen(23460);

            UdpClient udpClient = new UdpClient();

            udpClient.Connect(IPAddress.Loopback, 23460);
            udpClient.Send(new byte[BareSock.MTU + 1], BareSock.MTU + 1);

            var receivedPacket = Utils.WaitOnReceive(sock);

            Assert.IsNull(receivedPacket.Buffer);
            Assert.AreEqual(0, receivedPacket.Offset);
            Assert.AreEqual(0, receivedPacket.Length);

            sock.Close();
        }