C# 获取本地IP地址以及MAC地址

1、通过主机名获取局域网IP地址;
            try
            {
                IPHostEntry ipHostEntry = Dns.GetHostEntry(txtHost.Text);//传递计算机名
                if (ipHostEntry.Aliases.Length > 0)
                {
                    foreach (string alias in ipHostEntry.Aliases)
                        txtIP.Text = alias;
                }
                //获取IP地址
                foreach (IPAddress addr in ipHostEntry.AddressList)
                    txtIPAddress.Text = addr.ToString();//获取IP地址
             }
            catch
            {
                MessageBox.Show("错误的主机名。");
            }
2、通过局域网IP地址获取主机名;
try
            {
               IPHostEntry ipHostEntry = Dns.GetHostByAddress(txtIP.Text); ;//传递IP地址
               txtHostName.Text = ipHostEntry.HostName.ToString()//取得主机名
            }
            catch
            {
               MessageBox.Show("错误的IP地址。");
            }
3、通过局域网IP地址获取Mac地址
public static string ReadMac(string ip)//传递IP地址,即可返回MAC地址
        {
            string mac = "";
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "nbtstat";
            p.StartInfo.Arguments = "-a " + ip;
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.RedirectStandardOutput = true;            
            p.Start();
            string output = p.StandardOutput.ReadToEnd();
            int len = output.IndexOf("MAC Address = ");
            if(len>0)
            {
                 mac = output.Substring(len + 14, 17);
            }            
            p.WaitForExit();            
            return mac;

        }

 

C#获取本地计算机名,IP,MAC地址

using System;
using System.Drawing;
using System.Management;
using System;
using System.Net.Sockets;
using System.Collections;
using System.ComponentModel;
using System..Forms;
using System.Data;

namespace MAC_IP_name
{
     /// <summary>
     /// Form1 的摘要说明。
     /// </summary>
     public class Form1 : System.Windows.Forms.Form
     {
         private System.Windows.Forms.Label label4;
         private System.Windows.Forms.Grouox groupBox1;
         private System.Windows.Forms.TextBox txtMac;
         private System.Windows.Forms.TextBox txtIp;
         private System.Windows.Forms.TextBox txtName;
         private System.Windows.Forms.Label lblMac;
         private System.Windows.Forms.Label lblIp;
         private System.Windows.Forms.Label lblName;
         private System.Windows.Forms.Button button1;
         private System.Windows.Forms.Button button2;
         /// <summary>
         /// 必需的设计器变量。
         /// </summary>
         private System.ComponentModel.Container components = null;

         public Form1()
         {
             //
             // Windows 窗体设计器支持所必需的
             //
             InitializeComponent();

             //
             // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
             //
         }

         /// <summary>
         /// 清理所有正在使用的资源。
         /// </summary>
         protected override void Dispose( bool disposing )
         {
             if( disposing )
             {
                 if (components != null)
                 {
                     components.Dispose();
                 }
             }
             base.Dispose( disposing );
         }

         #region Windows 窗体设计器生成的代码
         /// <summary>
         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
         /// 此方法的内容。
         /// </summary>
         private void InitializeComponent()
         {
             this.label4 = new System.Windows.Forms.Label();
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.button2 = new System.Windows.Forms.Button();
             this.txtMac = new System.Windows.Forms.TextBox();
             this.txtIp = new System.Windows.Forms.TextBox();
             this.txtName = new System.Windows.Forms.TextBox();
             this.lblMac = new System.Windows.Forms.Label();
             this.lblIp = new System.Windows.Forms.Label();
             this.lblName = new System.Windows.Forms.Label();
             this.button1 = new System.Windows.Forms.Button();
             this.groupBox1.SuspendLayout();
             this.SuspendLayout();
             //
             // label4
             //
             this.label4.AutoSize = true;
             this.label4.Font = new System.Drawing.Font("楷体_GB2312", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.label4.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(128)), ((System.Byte)(128)));
             this.label4.Location = new System.Drawing.Point(49, 16);
             this.label4.Name = "label4";
             this.label4.Size = new System.Drawing.Size(245, 26);
             this.label4.TabIndex = 7;
             this.label4.Text = "获取本机计算机名IP与MAC";
             //
             // groupBox1
             //
             this.groupBox1.Controls.Add(this.button2);
             this.groupBox1.Controls.Add(this.txtMac);
             this.groupBox1.Controls.Add(this.txtIp);
             this.groupBox1.Controls.Add(this.txtName);
             this.groupBox1.Controls.Add(this.lblMac);
             this.groupBox1.Controls.Add(this.lblIp);
             this.groupBox1.Controls.Add(this.lblName);
             this.groupBox1.Controls.Add(this.button1);
             this.groupBox1.Location = new System.Drawing.Point(16, 56);
             this.groupBox1.Name = "groupBox1";
             this.groupBox1.Size = new System.Drawing.Size(320, 208);
             this.groupBox1.TabIndex = 11;
             this.groupBox1.TabStop = false;
             this.groupBox1.Text = "获取区";
             //
             // button2
             //
             this.button2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.button2.Location = new System.Drawing.Point(184, 160);
             this.button2.Name = "button2";
             this.button2.Size = new System.Drawing.Size(88, 32);
             this.button2.TabIndex = 18;
             this.button2.Text = "退出";
             this.button2.Click += new System.EventHandler(this.button2_Click);
             //
             // txtMac
             //
             this.txtMac.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));
             this.txtMac.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.txtMac.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(128)), ((System.Byte)(0)));
             this.txtMac.Location = new System.Drawing.Point(128, 110);
             this.txtMac.Name = "txtMac";
             this.txtMac.ReadOnly = true;
             this.txtMac.Size = new System.Drawing.Size(168, 21);
             this.txtMac.TabIndex = 17;
             this.txtMac.Text = "";
             //
             // txtIp
             //
             this.txtIp.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));
             this.txtIp.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.txtIp.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(128)), ((System.Byte)(0)));
             this.txtIp.Location = new System.Drawing.Point(128, 70);
             this.txtIp.Name = "txtIp";
             this.txtIp.ReadOnly = true;
             this.txtIp.Size = new System.Drawing.Size(168, 21);
             this.txtIp.TabIndex = 16;
             this.txtIp.Text = "";
             //
             // txtName
             //
             this.txtName.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));
             this.txtName.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.txtName.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(128)), ((System.Byte)(0)));
             this.txtName.Location = new System.Drawing.Point(128, 30);
             this.txtName.Name = "txtName";
             this.txtName.ReadOnly = true;
             this.txtName.Size = new System.Drawing.Size(168, 21);
             this.txtName.TabIndex = 15;
             this.txtName.Text = "";
             //
             // lblMac
             //
             this.lblMac.AutoSize = true;
             this.lblMac.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.lblMac.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(0)), ((System.Byte)(64)));
             this.lblMac.Location = new System.Drawing.Point(32, 112);
             this.lblMac.Name = "lblMac";
             this.lblMac.Size = new System.Drawing.Size(88, 22);
             this.lblMac.TabIndex = 14;
             this.lblMac.Text = "MAC地址为:";
             //
             // lblIp
             //
             this.lblIp.AutoSize = true;
             this.lblIp.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.lblIp.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(0)), ((System.Byte)(64)));
             this.lblIp.Location = new System.Drawing.Point(40, 72);
             this.lblIp.Name = "lblIp";
             this.lblIp.Size = new System.Drawing.Size(80, 22);
             this.lblIp.TabIndex = 13;
             this.lblIp.Text = "IP地址为:";
             //
             // lblName
             //
             this.lblName.AutoSize = true;
             this.lblName.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.lblName.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(0)), ((System.Byte)(64)));
             this.lblName.Location = new System.Drawing.Point(24, 32);
             this.lblName.Name = "lblName";
             this.lblName.Size = new System.Drawing.Size(97, 22);
             this.lblName.TabIndex = 12;
             this.lblName.Text = "计算机名为:";
             //
             // button1
             //
             this.button1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
             this.button1.Location = new System.Drawing.Point(48, 160);
             this.button1.Name = "button1";
             this.button1.Size = new System.Drawing.Size(88, 32);
             this.button1.TabIndex = 11;
             this.button1.Text = "点击获取";
             this.button1.Click += new System.EventHandler(this.button1_Click_1);
             //
             // Form1
             //
             this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
             this.ClientSize = new System.Drawing.Size(352, 285);
             this.Controls.Add(this.groupBox1);
             this.Controls.Add(this.label4);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
             this.MaximizeBox = false;
             this.Name = "Form1";
             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
             this.Text = "IP,计算机名,MAC查询";
             this.groupBox1.ResumeLayout(false);
             this.ResumeLayout(false);

         }
         #endregion

         /// <summary>
         /// 应用程序的主入口点。
         /// </summary>
         [STAThread]
         static void Main()
         {
             Application.Run(new Form1());
         }

         private void button1_Click_1(object sender, System.EventArgs e)
         {
             string s="",mac="";
             //
             //name
             //
             string hostInfo = Dns.GetHostName();            

             //
             //IP
             System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;  
             for (int i = 0; i < addressList.Length; i ++)
             {
                 s += addressList[i].ToString();
             }
             //
             //mac
             //


             ManagementClass mc;
             mc=new ManagementClass("Win32_NetworkAdapterConfiguration");
             ManagementObjectCollection moc=mc.GetInstances();
             foreach(ManagementObject mo in moc)
             {
                 if(mo["IPEnabled"].ToString()=="True")
                     mac=mo["MacAddress"].ToString();                    
             }


             txtName.Text=hostInfo;
             txtIp.Text=s;
             txtMac.Text=mac;


             button1.Enabled=false;
             button2.Focus();

         }

         private void button2_Click(object sender, System.EventArgs e)
         {
             Application.Exit();
         }
     }
}

转载于:https://www.cnblogs.com/liran/archive/2009/04/01/1426904.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取本地IP地址MAC地址,您可以使用C#的System.Net.NetworkInformation命名空间中的NetworkInterface类。以下是一个示例代码: ``` using System.Net.NetworkInformation; // 获取本地IP地址 foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up) { IPInterfaceProperties ipProps = nic.GetIPProperties(); foreach (var ip in ipProps.UnicastAddresses) { if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { string ipAddress = ip.Address.ToString(); // 在此处使用WebSocket向服务器发送在线状态注册 } } } } // 获取本地MAC地址 foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up) { PhysicalAddress mac = nic.GetPhysicalAddress(); string macAddress = BitConverter.ToString(mac.GetAddressBytes()); // 在此处使用WebSocket向服务器发送在线状态注册 } } ``` 要使用WebSocket向服务器发送在线状态注册,您需要使用C#中的WebSocket类,它位于System.Net.WebSockets命名空间中。以下是一个示例代码: ``` using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks; public static async Task SendWebSocketMessage(string message) { using (ClientWebSocket ws = new ClientWebSocket()) { await ws.ConnectAsync(new Uri("ws://your-server-url"), CancellationToken.None); byte[] messageBytes = Encoding.UTF8.GetBytes(message); ArraySegment<byte> messageSegment = new ArraySegment<byte>(messageBytes); await ws.SendAsync(messageSegment, WebSocketMessageType.Text, true, CancellationToken.None); } } ``` 将上述代码与获取本地IP地址MAC地址的代码结合起来,您可以编写一个方法来向服务器发送在线状态注册: ``` public static async Task RegisterOnlineStatus() { // 获取本地IP地址 foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up) { IPInterfaceProperties ipProps = nic.GetIPProperties(); foreach (var ip in ipProps.UnicastAddresses) { if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { string ipAddress = ip.Address.ToString(); // 向服务器发送在线状态注册 string message = $"{{\"type\": \"register\", \"ip\": \"{ipAddress}\"}}"; await SendWebSocketMessage(message); } } } } // 获取本地MAC地址 foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up) { PhysicalAddress mac = nic.GetPhysicalAddress(); string macAddress = BitConverter.ToString(mac.GetAddressBytes()); // 向服务器发送在线状态注册 string message = $"{{\"type\": \"register\", \"mac\": \"{macAddress}\"}}"; await SendWebSocketMessage(message); } } } ``` 请注意,此示例代码仅供参考,并且需要根据您的实际情况进行修改。例如,您需要替换“your-server-url”为您的服务器URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值