System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest.NetworkInterface_LoopbackInterfaceIndex_MatchesReceivedPackets C# (CSharp) Method

NetworkInterface_LoopbackInterfaceIndex_MatchesReceivedPackets() private method

private NetworkInterface_LoopbackInterfaceIndex_MatchesReceivedPackets ( bool ipv6 ) : System.Threading.Tasks.Task
ipv6 bool
return System.Threading.Tasks.Task
        public async Task NetworkInterface_LoopbackInterfaceIndex_MatchesReceivedPackets(bool ipv6)
        {
            using (var client = new Socket(SocketType.Dgram, ProtocolType.Udp))
            using (var server = new Socket(SocketType.Dgram, ProtocolType.Udp))
            {
                server.Bind(new IPEndPoint(ipv6 ? IPAddress.IPv6Loopback : IPAddress.Loopback, 0));
                var serverEndPoint = (IPEndPoint)server.LocalEndPoint;

                Task<SocketReceiveMessageFromResult> receivedTask = 
                    server.ReceiveMessageFromAsync(new ArraySegment<byte>(new byte[1]), SocketFlags.None, serverEndPoint);
                while (!receivedTask.IsCompleted)
                {
                    client.SendTo(new byte[] { 42 }, serverEndPoint);
                    await Task.Delay(1);
                }

                Assert.Equal(
                    (await receivedTask).PacketInformation.Interface,
                    ipv6 ? NetworkInterface.IPv6LoopbackInterfaceIndex : NetworkInterface.LoopbackInterfaceIndex);
            }
        }
    }