GetHostEntry () não resolve mais o endereço
ecentemente, mudei do .NET v3.5 para o v4.0 Client Profile e, pela primeira vez, execute GetHostEntry () com problem
tcpClient.SocketInfo.SourceName = remoteMatcher.Host; // "88.255.126.48"
tcpClient.SocketInfo.SourcePort = remoteMatcher.Port; // 999
IPHostEntry ipEntry = Dns.GetHostEntry(tcpClient.SocketInfo.SourceName);
GetHostEntry () causa uma exceção:
WSANO_DATA 11004 Nome válido, nenhum registro de dados do tipo solicitado. O nome solicitado é válido e foi encontrado no banco de dados, mas não possui os dados associados corretos que estão sendo resolvidos. O exemplo usual para isso é uma tentativa de conversão de nome para endereço do host (usando gethostbyname ou WSAAsyncGetHostByName) que usa o DNS (Servidor de Nomes de Domínio). Um registro MX é retornado, mas nenhum registro A - indicando que o próprio host existe, mas não está diretamente acessíve
Vou reiniciar a máquina e queria fazer essa pergunta antes que tudo se perdesse na minha cabeça.
ATUALIZAR
Minha solução alternativa:
// .NET Framework v4.0 bug??
IPAddress ip;
if (IPAddress.TryParse(tcpClient.SocketInfo.SourceName, out ip))
tcpClient.SocketInfo.SourceIP = tcpClient.SocketInfo.SourceName;
else
{
IPHostEntry ipEntry = Dns.GetHostEntry(tcpClient.SocketInfo.SourceName);
IPAddress[] addr = ipEntry.AddressList;
tcpClient.SocketInfo.SourceIP = addr[addr.Length - 1].ToString();
}