c#之获取本机主机名的四种方式总结
作者:张伟杰-Vijay
获取本机主机名的四种方式
获取本机 NetBIOS 名称
lineLog.Computer = Environment.MachineName;
获取本机 NetBIOS 名称
string a = SystemInformation.ComputerName;
获取本机主机名,前提是引用 System.Net
using System.Net; string b = Dns.GetHostName(); string d = Dns.GetHostEntry("localhost").HostName;
检索环境变量“computername”的值
string c = Environment.GetEnvironmentVariable("computername");
这是我的计算机的名称:
先看一下它们运行的结果:
四种方法的区别
首先是第一种和第二种方法,它们返回的值是一样的,都是本机的NetBIOS名称,可以说这两种方法是一样的。那么什么是NetBIOS名称呢?
如果想更改NetBIOS名称,直接修改计算机名称就可以了,只不过NetBIOS名称只会取计算机名称的前15个字符。
所以看上图就可以发现,NetBIOS名称只有我计算机名称的前15位。
第三种方法获得的是计算机名,也可以获得计算机全名。计算机全名就是你的主机名+主DNS后缀,默认的主DNS后缀是空的,但是自己可以更改。详细情况请看上图。
第四种方法获得的是本机环境变量名为“computername”的值,此值也可以自己更改,但是默认的就是你的计算机名。
主机名和NetBIOS名称的区别
那么主机名和NetBIOS名称有什么区别呢?
其实它们的作用是相同的,都只是计算机的一个名称而已,都是为了标识计算机的,利用网络协议,可以将计算机名称和ip地址映射。
它们的不同之处就在于:计算机名称和ip地址映射时用的协议不同。
主机名和ip地址解析有两种方法:
- 一是利用NetBIOS协议
- 二是通过DNS服务器
当使用NetBIOS协议时,使用的就是NetBIOS名称;如果使用DNS服务器解析,使用的就是计算机名。
因为NetBIOS占用系统资源少、传输效率高,所以多适用于小型的局域网,所以第一种和第二种方法返回的NetBIOS名称只在局域网内可见,而第三种方法返回的主机名是基于TCP/IP协议的。
下面举个例子:
我们可以在“运行”里输入 \\name\share
或 http://name/share
来访问共享资源,此时的name确切的说是用的那个名称呢?
\\NetBIOS名称\share http://主机名/share
如果想看纯英的解释,请点击下面这个链接:Difference between SystemInformation.ComputerName, Environment.MachineName, and Net.Dns.GetHostName
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。