社区
C#
帖子详情
如何在C#中提取本机的MAC地址?急急急急急急急急!!在现等!!!!!!!!!!
arken
2004-11-02 11:21:25
如何在C#中提取本机的MAC地址?要的是客户端的MAC地址,就是用户的MAC地址,急急急急急急急急!!在现等!!!!!!!!!
...全文
298
8
打赏
收藏
如何在C#中提取本机的MAC地址?急急急急急急急急!!在现等!!!!!!!!!!
如何在C#中提取本机的MAC地址?要的是客户端的MAC地址,就是用户的MAC地址,急急急急急急急急!!在现等!!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dazhu2
2004-11-02
打赏
举报
回复
namespace 获得MAC地址
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
[DllImport("Iphlpapi.dll")]
public static extern int SendARP (Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);//dest为目标机器的IP;Host为本机器的IP
[DllImport("Ws2_32.dll")]
public static extern Int32 inet_addr (string ip);//去掉IP中的点
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
this.textBox1.Text="192.168.0.1";
this.textBox2.Text="";
}
private void button1_Click(object sender, System.EventArgs e)
{
string s;
this.button1.Enabled=false;
IPHostEntry myin=Dns.GetHostByName(System.Environment.MachineName);
MessageBox.Show(myin.HostName.ToString());
MessageBox.Show(myin.AddressList[0].ToString());
Int32 mysource=inet_addr(myin.AddressList[0].ToString());
Int32 iptest=inet_addr(myin.AddressList[0].ToString());
Int64 macinfo=new Int64();
Int32 len=6;
SendARP(iptest,mysource,ref macinfo,ref len);
s=System.Convert.ToString(macinfo,16);
MessageBox.Show(s.ToString());
return;
string[] b=new string[6];
string box;
int l=12;
for(int i=0;i<6;i++)
{
b[i]=s.Substring(l-2,2);
l-=2;
}
box=b[0];
for(int j=1;j<6;j++)
{
box=box+"-"+b[j];
}
this.textBox2.Text=box;
}
haoztao
2004-11-02
打赏
举报
回复
楼上已经弄出来了,就是那些东东啦
xiaoslong
2004-11-02
打赏
举报
回复
可以用arp -a来查看,在c#中你可以调用类库来实现
trnbo
2004-11-02
打赏
举报
回复
using System;
using System.Runtime.InteropServices;
namespace UtilityControl
{
/// <summary>
/// 关于IP地址的若干操作
/// </summary>
public class IP
{
public IP()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);
/// <summary>
/// 根据ip得到网卡mac地址
/// </summary>
/// <param name="ip">给出的ip地址</param>
/// <returns>对应ip的网卡mac地址</returns>
public static Int64 GetMACByIP(string ip)
{
Int32 ldest= inet_addr(ip); //目的地的ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
return macinfo;
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0;
}
}
}
程序得出来的是一个64位的数,转化成16进制 就一样了.
Tomgus
2004-11-02
打赏
举报
回复
using System;
using System.Runtime.InteropServices;
namespace UtilityControl
{
/// <summary>
/// 关于IP地址的若干操作
/// </summary>
public class IP
{
public IP()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);
/// <summary>
/// 根据ip得到网卡mac地址
/// </summary>
/// <param name="ip">给出的ip地址</param>
/// <returns>对应ip的网卡mac地址</returns>
public static Int64 GetMACByIP(string ip)
{
Int32 ldest= inet_addr(ip); //目的地的ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
return macinfo;
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0;
}
}
}
wovow
2004-11-02
打赏
举报
回复
#include < windows.h >
#include < wincon.h >
#include < stdlib.h >
#include < stdio.h >
#include < time.h >
#include <nb30.h>
#pragma comment(lib,"netapi32.lib")
// 因为是通过NetAPI来获取网卡信息,所以需要包含其题头文件nb30.h #include < nb30.h >
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, * PASTAT;
ASTAT Adapter;
// 定义一个存放返回网卡信息的变量
// 输入参数:lana_num为网卡编号,一般地,从0开始,但在Windows 2000中并不一定是连续分配的
void getmac_one (int lana_num)
{
NCB ncb;
UCHAR uRetCode;
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = lana_num;
// 指定网卡号
// 首先对选定的网卡发送一个NCBRESET命令,以便进行初始化
uRetCode = Netbios( &ncb );
printf( "The NCBRESET return code is: 0x%x \n", uRetCode );
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = lana_num; // 指定网卡号
strcpy( (char *)ncb.ncb_callname, "* " );
ncb.ncb_buffer = (unsigned char *) &Adapter;
// 指定返回的信息存放的变量
ncb.ncb_length = sizeof(Adapter);
// 接着,可以发送NCBASTAT命令以获取网卡的信息
uRetCode = Netbios( &ncb );
printf( "The NCBASTAT return code is: 0x%x \n", uRetCode );
if ( uRetCode == 0 )
{
// 把网卡MAC地址格式化成常用的16进制形式,如0010-A4E4-5802
printf( "The Ethernet Number[%d] is: %02X%02X-%02X%02X-%02X%02X\n",
lana_num,
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5] );
}
}
int main(int argc, char* argv[])
{
NCB ncb;
UCHAR uRetCode;
LANA_ENUM lana_enum;
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBENUM;
ncb.ncb_buffer = (unsigned char *) &lana_enum;
ncb.ncb_length = sizeof(lana_enum);
// 向网卡发送NCBENUM命令,以获取当前机器的网卡信息,如有多少个网卡、每张网卡的编号等
uRetCode = Netbios( &ncb );
printf( "The NCBENUM return code is: 0x%x \n", uRetCode );
if ( uRetCode == 0 )
{
printf( "Ethernet Count is : %d\n\n", lana_enum.length);
// 对每一张网卡,以其网卡编号为输入编号,获取其MAC地址
for ( int i=0; i< lana_enum.length; ++i)
getmac_one( lana_enum.lana[i]);
}
int aa=0;
scanf("%d",aa);
return 0;
}
xiaoslong
2004-11-02
打赏
举报
回复
运行cmd,输入 ipconfig /all命令,就可以查看
arken
2004-11-02
打赏
举报
回复
楼上的,因为我对C#一窍不通,今天第一次用这个,所以我也不知道各位写的对不对,所以我希望那个朋友最好能写详细一下,(有详细注释的),谢谢大家了,请大家帮帮忙,或者是写一个函数,这个函数可以读到我本机的MAC,然后我在C#程序中调用您写的函数,但是你得告诉我怎么调用,谢谢了,请大家帮帮忙,分数可以再加!!!!!!!!
易语言源码方舟远程监控(易语言2003年大赛一等奖)
易语言源码方舟远程监控(易语言2003年大赛一等奖)
组合专机-丝杠车床改光杠键槽铣专机进给系统设计.rar
组合专机-丝杠车床改光杠键槽铣专机进给系统设计.rar
基于深度学习分类的时相关MIMO信道的递归CSI量化(Matlab代码实现)
内容概要:本文围绕基于深度学习分类的时相关MIMO信道递归CSI量化技术展开研究,提出一种结合深度学习模型的递归式信道状态信息(CSI)反馈优化方法。该方法针对无线通信系统
中
时变MIMO信道的特点,利用深度学习网络对信道时序特征进行有效
提取
与分类,实现高精度、低开销的CSI量化与反馈,从而提升大规模MIMO系统的频谱效率与传输性能。研究不仅涵盖了算法设计与模型构建,还提供了完整的Matlab代码实现,便于验证与复现,适用于现代高性能无线通信系统的优化需求。; 适合人群:具备通信系统理论基础、熟悉MIMO与信道反馈机制,并掌握Matlab编程技能的研究生、科研人员及从事5G/6G通信、智能信号处理与深度学习在通信
中
应用的工程技术人员。; 使用场景及目标:①研究MIMO系统
中
基于深度学习的CSI反馈压缩与重建技术;②探索时序信道建模与递归量化机制的深度融合方法;③复现并改进现有算法,支撑高水平学术论文撰写或通信系统原型开发。; 阅读建议:建议读者结合提供的Matlab代码逐模块调试,深入理解深度学习分类网络与时序递归量化策略的协同工作机制,重点关注特征
提取
、分类决策与量化更新等关键环节的设计逻辑,并可尝试迁移至不同信道模型或引入更先进网络结构以进一步提升性能。
编译原理(清华大学第二版)课后答案
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 Compilers Principles, Techniques, & Tools (purple dragon book) second edition exercise answers 编译原理(紫龙书)
中
文第2版习题答案 Join the chat at https://gitter.im/fool2fish/dragon-book-exercise-answers Something I hope you know before go into the answers First, please watch or star this repo, I'll be more happy if you follow me. Bug report, questions and discussion are welcome, you can post an issue or pull a request. All graphs are painted by yed, it is simple, cross-platform and free. There are some key-point.md file, key points and difficult points are summarized in them. As we know only teacher can buy the answer book, so I don't know the standard answer, but I tried my best to keep the correctness, i...
组合专机-汽车变速箱两端面液压双头组合铣床的设计.rar
组合专机-汽车变速箱两端面液压双头组合铣床的设计.rar
C#
111,131
社区成员
642,542
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章