I am using .NET Framework 4.5 develop TCP socket program, when I try MSDN "Asynchronous Server Socket Example", VS2013 said "Resolve is obsoleted for this type, please use GetHostEntry instead." on here:
According Obsolete Members in the .NET Framework 4.5, I replace Dns.Resolve method with Dns.GetHostEntry, run the Socket Server Example, then I got some exception.
That was due to the example code get IPAddress using "ipHostInfo.AddressList[0]", normally we start the TCP server on IPv4, and the old method Dns.Resolve return IPv4 address at first of array, so using "ipHostInfo.AddressList[0]" to get IPAddress will work, but Dns.GetHostEntry will return IPv6 address, so we need to pickup the IPv4 address up.
So it will get first IPv4 address, the code was working in my case, hope it's working on your case too.
According Obsolete Members in the .NET Framework 4.5, I replace Dns.Resolve method with Dns.GetHostEntry, run the Socket Server Example, then I got some exception.
That was due to the example code get IPAddress using "ipHostInfo.AddressList[0]", normally we start the TCP server on IPv4, and the old method Dns.Resolve return IPv4 address at first of array, so using "ipHostInfo.AddressList[0]" to get IPAddress will work, but Dns.GetHostEntry will return IPv6 address, so we need to pickup the IPv4 address up.
//older way //IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); //IPAddress ipAddress = ipHostInfo.AddressList[0]; //.net 4.5 IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList.First(x => x.AddressFamily == AddressFamily.InterNetwork);
So it will get first IPv4 address, the code was working in my case, hope it's working on your case too.
No comments:
Post a Comment