作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果主机名(字符串)解析为本地计算机,谁能想出一种简单的方法在 win32 或 .NET 中判断?如:
"myhostname"
"myhostname.mydomain.local"
"192.168.1.1"
"localhost"
此练习的目标是生成一个测试,以判断 Windows 安全层是否会将对计算机的访问视为本地访问或网络访问
最佳答案
在 .NET 中,您可以:
IPHostEntry iphostentry = Dns.GetHostEntry (Dns.GetHostName ());
然后对于任何主机名,检查它是否解析为 iphostEntry.AddressList
中的 IP 之一(这是一个 IPAddress[])。
这是一个完整的程序,它将检查命令行中传递的主机名/IP 地址:
using System;
using System.Net;
class Test {
static void Main (string [] args)
{
IPHostEntry iphostentry = Dns.GetHostEntry (Dns.GetHostName ());
foreach (string str in args) {
IPHostEntry other = null;
try {
other = Dns.GetHostEntry (str);
} catch {
Console.WriteLine ("Unknown host: {0}", str);
continue;
}
foreach (IPAddress addr in other.AddressList) {
if (IPAddress.IsLoopback (addr) || Array.IndexOf (iphostentry.AddressList, addr) != -1) {
Console.WriteLine ("{0} IsLocal", str);
break;
}
}
}
}
}
关于.net - 如何测试主机名是否指本地机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959172/
我是一名优秀的程序员,十分优秀!