public async Task ConnectAsync_DnsEndPoint_Success(int mode)
{
using (TcpClient client = new TcpClient())
{
Assert.False(client.Connected);
string host = System.Net.Test.Common.Configuration.Sockets.SocketServer.IdnHost;
int port = System.Net.Test.Common.Configuration.Sockets.SocketServer.Port;
IPAddress[] addresses;
switch (mode)
{
case 0:
await client.ConnectAsync(host, port);
break;
case 1:
addresses = await Dns.GetHostAddressesAsync(host);
await client.ConnectAsync(addresses[0], port);
break;
case 2:
addresses = await Dns.GetHostAddressesAsync(host);
await client.ConnectAsync(addresses, port);
break;
case 3:
await Task.Factory.FromAsync(client.BeginConnect, client.EndConnect, host, port, null);
break;
case 4:
addresses = await Dns.GetHostAddressesAsync(host);
await Task.Factory.FromAsync(client.BeginConnect, client.EndConnect, addresses[0], port, null);
break;
case 5:
addresses = await Dns.GetHostAddressesAsync(host);
await Task.Factory.FromAsync(client.BeginConnect, client.EndConnect, addresses, port, null);
break;
}
Assert.True(client.Connected);
Assert.NotNull(client.Client);
Assert.Same(client.Client, client.Client);
using (NetworkStream s = client.GetStream())
{
byte[] getRequest = Encoding.ASCII.GetBytes("GET / HTTP/1.1\r\n\r\n");
await s.WriteAsync(getRequest, 0, getRequest.Length);
Assert.NotEqual(-1, s.ReadByte()); // just verify we successfully get any data back
}
}
}