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(); }
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(); }
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(); }