コード例 #1
0
        public async Task Should_receive_small_parts_less_than_4_bytes()
        {
            TcpTransport transport = CreateTcpTransport();

            Task <byte[]> receiveTask = transport.FirstAsync().Timeout(TimeSpan.FromMilliseconds(3000)).ToTask();

            await transport.ConnectAsync();

            Socket clientSocket = _serverSocket.Accept();

            byte[] payload = "010203040506070809".HexToBytes();

            var packet = new TcpTransportPacket(0x0ABBCCDD, payload);

            byte[] part1 = packet.Data.Take(1).ToArray();
            byte[] part2 = packet.Data.Skip(part1.Length).Take(2).ToArray();
            byte[] part3 = packet.Data.Skip(part1.Length + part2.Length).Take(3).ToArray();
            byte[] part4 = packet.Data.Skip(part1.Length + part2.Length + part3.Length).ToArray();

            clientSocket.Send(part1);
            await Task.Delay(100);

            clientSocket.Send(part2);
            await Task.Delay(200);

            clientSocket.Send(part3);
            await Task.Delay(50);

            clientSocket.Send(part4);
            await Task.Delay(50);

            byte[] receivedData = await receiveTask;
            receivedData.Should().BeEquivalentTo(payload);

            await transport.DisconnectAsync();

            clientSocket.Close();
        }
コード例 #2
0
        public async Task Should_receive_big_payload()
        {
            TcpTransport transport = CreateTcpTransport();

            Task <byte[]> receiveTask = transport.FirstAsync().Timeout(TimeSpan.FromMilliseconds(1000)).ToTask();

            await transport.ConnectAsync();

            Socket clientSocket = _serverSocket.Accept();

            byte[] payload = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray();

            var packet = new TcpTransportPacket(0x0FA0B1C2, payload);

            clientSocket.Send(packet.Data);

            byte[] receivedData = await receiveTask;
            receivedData.Should().BeEquivalentTo(payload);

            await transport.DisconnectAsync();

            clientSocket.Close();
        }
コード例 #3
0
        public async Task Should_receive()
        {
            TcpTransport transport = CreateTcpTransport();

            Task <byte[]> receiveTask = transport.FirstAsync().Timeout(TimeSpan.FromMilliseconds(1000)).ToTask();

            await transport.ConnectAsync();

            Socket clientSocket = _serverSocket.Accept();

            byte[] payload = "010203040506070809".HexToBytes();

            var packet = new TcpTransportPacket(0x0FA0B1C2, payload);

            clientSocket.Send(packet.Data);

            byte[] receivedData = await receiveTask;
            receivedData.Should().BeEquivalentTo(payload);

            await transport.DisconnectAsync();

            clientSocket.Close();
        }