C#得到局域网内所有主机名,IP地址,MAC地址
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
原文地址:C#得到局域网内所有主机名,IP地址,MAC地址作者:西西里の哈皮Kevi
private void btnCheck_Click(object sender, EventArgs e)
{
string ipAddress = this.cboBoxIp.Text.Trim();
Regex rgx = new
Regex(@"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0 -9]|25[0-5])){3}$");
if (rgx.IsMatch(ipAddress))
{
belIpResult.Text = GetName(ipAddress);
belMacResult.Text = GetMacAddress(ipAddress);
}
else
{
belIpResult.Text = "IP address is not valid.";
belMacResult.Text = "No mac result";
}
}
///
/// 得到所有局域网内机器名
///
private void GetAllLocalMachineName()
{
System.Diagnostics.ProcessStartInfo prcssStrtInfo = new
System.Diagnostics.ProcessStartInfo();
prcssStrtInfo.FileName = @"C:windowssystem32cmd.exe";
prcssStrtInfo.Arguments = @"/c net view > F:\LanMachineName.txt"; // 将所有局域网机器名输出到文本文件
prcssStrtInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(prcssStrtInfo);
}
///
/// 通过Ip地址获得主机名
///
///
///
private string GetName(string IpAddress)//获取指定IP的计算机名称
{
string name="";
try
{
IPHostEntry ipHstEntry = Dns.GetHostByAddress(IpAddress);//传递IP地址 //IPHostEntry ipHstEntry = Dns.GetHostEntry(IpAddress);
name = ipHstEntry.HostName.ToString();//取得主机名
}
catch (Exception e)
{
name = e.Message;
}
return name;
}
///
/// 通过Ip得到MAC地址
///
///
///
private string GetMacAddress(string IpAddress)//得到指定IP的MAC地址
{
string macAddress = "";
Int32 ldest = 0;
try
{
ldest = inet_addr(IpAddress);
}
catch (Exception iperr)
{
MessageBox.Show(iperr.Message);
}
Int64 macinfo = new Int64();
Int32 len = 6;
try
{
int res = SendARP(ldest, 0, ref macinfo, ref len);
}
catch (Exception err)
{
// throw new Exception("在解析MAC地址过程发生了错误!");
MessageBox.Show(err.Message);
}
string originalMACAddress = macinfo.ToString("X4");
if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
{ //合法MAC地址
string mac1, mac2, mac3, mac4, mac5, mac6;
mac1 = originalMACAddress.Substring(10, 2);
mac2 = originalMACAddress.Substring(8, 2);
mac3 = originalMACAddress.Substring(6, 2);
mac4 = originalMACAddress.Substring(4, 2);
mac5 = originalMACAddress.Substring(2, 2);
mac6 = originalMACAddress.Substring(0, 2);
macAddress = mac1 + ":" + mac2 + ":" + mac3 + ":" + mac4 + ":" + mac5 + ":" + mac6; //canPing = true;
}
else
{
macAddress = "无法探测到MAC地址";
//canPing = false;
}
return macAddress;
}