- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我最近从 .NET v3.5 切换到 v4.0 Client Profile,第一次运行 GetHostEntry() 时遇到问题。
tcpClient.SocketInfo.SourceName = remoteMatcher.Host; // "88.255.126.48"
tcpClient.SocketInfo.SourcePort = remoteMatcher.Port; // 999
IPHostEntry ipEntry = Dns.GetHostEntry(tcpClient.SocketInfo.SourceName);
GetHostEntry() 导致异常:
WSANO_DATA 11004 Valid name, no data record of requested type. The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for. The usual example for this is a host name-to-address translation attempt (using gethostbyname or WSAAsyncGetHostByName) which uses the DNS (Domain Name Server). An MX record is returned but no A record—indicating the host itself exists, but is not directly reachable.
我要重新启动机器,想在我失去一切之前问这个问题。
更新:
我的解决方法:
// .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();
}
最佳答案
这是我试过的东西,我记得遇到过同样的问题随意使用我的例子来测试你的东西
** 我改用 IPHostEntry **
string[] host = (address.Split('@'));
string hostname = host[1];
IPHostEntry IPhst = Dns.Resolve(hostname);
IPEndPoint endPt = new IPEndPoint(IPhst.AddressList[0], 25);
Socket s= new Socket(endPt.AddressFamily,
SocketType.Stream,ProtocolType.Tcp);
s.Connect(endPt);
或者当我用它来获取电子邮件地址的主机名时
try
{
Response.Write("One");
string[] host = (txtEmailAddress.Text.Split('@'));
string hostname = host[1];
Response.Write(host);
IPHostEntry IPhst = Dns.Resolve(hostname);
IPEndPoint endPt = new IPEndPoint(IPhst.AddressList[0], 25);
Socket s = new Socket(endPt.AddressFamily,
SocketType.Stream, ProtocolType.Tcp);
Response.Write(endPt);
s.Connect(endPt);
}
catch (SocketException se)
{
lblErrMsg.Text = se.Message.ToString();
PublicUtils.AddError("Error: " + se.Message + txtEmailAddress.Text);
txtEmailAddress.Focus();
return;
}
关于c# - GetHostEntry() 不再解析地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6856534/
我最近从 .NET v3.5 切换到 v4.0 Client Profile,第一次运行 GetHostEntry() 时遇到问题。 tcpClient.SocketInfo.So
我一直试图找到使用 GetHostAddresses 或 GetHostEntry 的正确位置。我通过阅读这篇文章 (http://msdn.microsoft.com/en-us/library/m
我来了from powershell 到 Mono: thufir@dur:~/mono$ thufir@dur:~/mono$ ls hello.cs thufir@dur:~/mono$ thuf
我只是想知道是否会出现主机名可以成功解析但返回的 hostEntry.AddressList 为空的情况。 目前我正在做这样的事情: IPHostEntry hostEntry = Dns.GetHo
关于 MSDN它提到 GetHostByName 已过时。替换为 GetHostEntry。他们有什么区别? 最佳答案 看起来 GetHostEntry 做了更多的错误检查并且还支持 Network
在新的 Windows 2012 服务器上 Dns.GetHostEntry Method (IPAddress)返回本地指定的主机名,但不是 DNS 已知的 IP 地址名称。 IP 地址是新服务器的
想知道是否有人可以帮助我。我对 C# 的了解不多,但对于我想做的事情来说它很容易。 我正在制作一个小应用程序,它将接收我网络上的主机名,然后返回完整的 ipaddress(ipv4) ....从那里我
我在 C# 中有一个 Windows 窗体应用程序,我正在尝试获取列表中所有客户端的主机名。下面给出的是来自此链接的 ra00l 的代码示例:GetHostEntry is very slow (我有
我有使用 Dns.GetHostEntry(hostNameOrIp) 的代码,我想检查一次该函数返回真实值的场景但在某个时间(当我决定) 此函数抛出异常。 目前我在 visual studio 20
我在文档中找不到任何关于这实际上做了什么的适当描述。 它是否检查 A 记录或 CNAME 记录或两者是否存在? 我的理解是,在 .NET 4 中,如果主机不存在,则会抛出 SocketExceptio
这个问题可能突出了我对网络原理缺乏理解,而不是编程问题。 我正在使用以下命令查找主机名 Dns.GetHostEntry 这会返回一个 IPHostEntry 给我,它有一个 AddressList
在 .NET 中,您可以调用 Dns.GetHostEntry(hostname) 这使用网络设置中的 DNS 条目进行 DNS 查找,但我想指定 DNS 服务器 8.8.8.8 进行查找,而不更改
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
假设在同一个网络中有两台计算机,名为 com1 和 com2。 在 com1 上,如果我调用 Dns.GetHostEntry("com2") 果然,它只返回 1 个 IP 地址,例如 192.168
我可以使用 Dns.GetHostEntry("google.com") 获取 uri 的 IP 地址,如“google.com”,例如: var ip = Dns.GetHostEn
我更改了我的代码,因此它不再使用已弃用的: Dns.GetHostByAddress(ipaddress); 使用: Dns.GetHostEntry(ipaddress); 问题是我从 Dns.Ge
我试图通过传入 IP 地址来获取主机名。我使用以下代码。 System.Net.Dns.GetHostEntry("192.168.x.x").HostName 对于某些主机,上面的代码正确返回了主机
我这里有一些代码在 IPv4 机器上运行良好,但在我们的构建服务器(IPv6)上它失败了。简而言之: IPHostEntry ipHostEntry = Dns.GetHostEntry(string
这台机器的 FQDN: thufir@dur:~$ thufir@dur:~$ hostname --fqdn dur.bounceme.net thufir@dur:~$ 是的...正在工作 dir
这是通过 USB 连接到我的计算机的手持设备,使用 Compact Framework: 当我调用 Dns.GetHostEntry("") 或 Dns.GetHostEntry(IPAddress.
我是一名优秀的程序员,十分优秀!