搜档网
当前位置:搜档网 › wifi下获取ip和mac地址

wifi下获取ip和mac地址

wifi下获取ip和mac地址
wifi下获取ip和mac地址

2. [代码][Java]代码

01//所需的权限

02 03 04

05---------------------------------------------------------------------

06//布局

07

08a n d r o i d:i d="@+i d/b t n"

09a n d r o i d:t e x t="获取I P"

10a n d r o i d:l a y o u t_w i d t h="f i l l_p a r e n t"

11a n d r o i d:l a y o u t_h e i g h t="w r a p_c o n t e n t"

12a n d r o i d:o n C l i c k="o n c l i c k"

13/>

14

15a n d r o i d:i d="@+i d/i p_t x t"

16a n d r o i d:l a y o u t_w i d t h="f i l l_p a r e n t"

17a n d r o i d:l a y o u t_h e i g h t="w r a p_c o n t e n t"/>

18

19

20a n d r o i d:i d="@+i d/m a c_t x t"

21a n d r o i d:l a y o u t_w i d t h="f i l l_p a r e n t"

22a n d r o i d:l a y o u t_h e i g h t="w r a p_c o n t e n t"/>

23-------------------------------------------------------------------------------

24//正文

25p a c k a g e c o m.w i f i;

26

27i m p o r t j a v a.n e t.I n e t A d d r e s s;

28i m p o r t j a v a.n e t.N e t w o r k I n t e r f a c e;

29i m p o r t j a v a.n e t.S o c k e t E x c e p t i o n;

30i m p o r t j a v a.u t i l.E n u m e r a t i o n;

31

32i m p o r t a n d r o i d.a p p.A c t i v i t y;

33i m p o r t a n d r o i d.c o n t e n t.C o n t e x t;

34i m p o r t a n d r o i d.n e t.w i f i.W i f i I n f o;

35i m p o r t a n d r o i d.n e t.w i f i.W i f i M a n a g e r;

36i m p o r t a n d r o i d.o s.B u n d l e;

37i m p o r t a n d r o i d.u t i l.L o g;

38i m p o r t a n d r o i d.v i e w.V i e w;

39i m p o r t a n d r o i d.w i d g e t.B u t t o n;

40i m p o r t a n d r o i d.w i d g e t.E d i t T e x t;

41p u b l i c c l a s s M a i n A c t i v i t y e x t e n d s A c t i v i t y{

42p u b l i c s t a t i c S t r i n g I P;//本机I P

43p u b l i c s t a t i c S t r i n g M A C;//本机M A C

44

45B u t t o n b t n=n u l l;

46E d i t T e x t i p_t x t=n u l l;

47E d i t T e x t m a c_t x t=n u l l;

48@O v e r r i d e

49p u b l i c v o i d o n C r e a t e(B u n d l e s a v e d I n s t a n c e S t a t e){

50s u p e r.o n C r e a t e(s a v e d I n s t a n c e S t a t e);

51s e t C o n t e n t V i e w(R.l a y o u t.m a i n);

52b t n=(B u t t o n)f i n d V i e w B y I d(R.i d.b t n);

53i p_t x t=(E d i t T e x t)f i n d V i e w B y I d(R.i d.i p_t x t);

54m a c_t x t=(E d i t T e x t)f i n d V i e w B y I d(R.i d.m a c_t x t);

55

56}

57p u b l i c v o i d o n c l i c k(V i e w v){

58s w i t c h(v.g e t I d()){

59c a s e R.i d.b t n:

60I P=g e t L o c a l I p A d d r e s s();//获取本机I P

61M A C=g e t L o c a l M a c A d d r e s s();//获取本机M A C

62i p_t x t.s e t T e x t(I P);

63m a c_t x t.s e t T e x t(M A C);

64b r e a k;

65}

66}

67

68p u b l i c S t r i n g g e t L o c a l I p A d d r e s s(){

69t r y{

70f o r(E n u m e r a t i o ne n=N e t w o r k I n t e r f a c e

71.g e t N e t w o r k I n t e r f a c e s();e n.h a s M o r e E l e m e n t s();){

72N e t w o r k I n t e r f a c e i n t f=e n.n e x t E l e m e n t();

73f o r(E n u m e r a t i o ne n u m I p A d d r=i n t f

74.g e t I n e t A d d r e s s e s();e n u m I p A d d r.h a s M o r e E l e m e n t s();){

75I n e t A d d r e s s i n e t A d d r e s s=e n u m I p A d d r.n e x t E l e m e n t();

76i f(!i n e t A d d r e s s.i s L o o p b a c k A d d r e s s()){

77r e t u r n i n e t A d d r e s s.g e t H o s t A d d r e s s().t o S t r i n g();

78}

79}

80}

81}c a t c h(S o c k e t E x c e p t i o n e x){

82L o g.e("W i f i P r e f e r e n c e I p A d d r e s s",e x.t o S t r i n g());

83}

84r e t u r n n u l l;

85}

86

87p u b l i c S t r i n g g e t L o c a l M a c A d d r e s s(){

88W i f i M a n a g e r w i f i=(W i f i M a n a g e r)g e t S y s t e m S e r v i c e(C o n t e x t.W I F I_S E R V I C E); 89W i f i I n f o i n f o=w i f i.g e t C o n n e c t i o n I n f o();

90r e t u r n i n f o.g e t M a c A d d r e s s();

91}

92}

android获取Mac地址和IP地址

android获取Mac地址和IP地址 获取Mac地址实际项目中测试了如下几种方法: (1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac 地址,这种方法也是网络上使用的最多的方法) //根据Wifi信息获取本地Mac public static String getLocalMacAddressFromWifiInfo(Context context){ WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); } (2)调用Linux的busybox,通过linux命令来获取 //根据busybox获取本地Mac public static String getLocalMacAddressFromBusybox(){ String result = ""; String Mac = ""; result = callCmd("busybox ifconfig","HWaddr"); //如果返回的result == null,则说明网络不可取 if(result==null){ return "网络出错,请检查网络"; } //对该行数据进行解析 //例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67 if(result.length()>0 && result.contains("HWaddr")==true){ Mac = result.substring(result.indexOf("HWaddr")+6, result.length()-1); Log.i("test","Mac:"+Mac+" Mac.length: "+Mac.length()); /*if(Mac.length()>1){ Mac = Mac.replaceAll(" ", "");

通过客户端ip获取mac地址

public class MacUtils { /** * 通过ip获取mac地址 * @param ipAddress 客户端ip * @return mac地址 */ public static String getMACAddressByIp(String ipAddress) { String str = "", macAddress = ""; try { Process pp = Runtime.getRuntime().exec("arp -a " + ipAddress); InputStreamReader ir = new InputStreamReader(pp.getInputStream(), "gbk"); BufferedReader br = new BufferedReader(ir); while ((str = br.readLine()) != null) { if (str.indexOf(ipAddress) > 1) { str = str.trim(); macAddress = str.substring(str.indexOf(" "), str.length()); macAddress = macAddress.trim(); macAddress = macAddress.substring(0,17); break; } } pp.destroy(); br.close(); ir.close(); } catch (Exception ex) { return "Can't Get MAC Address!"; }

获取局域网IP和MAC地址的方法

取得IP的方法很多,比如"局域网查看工具",我推荐用“局域网花名册”网上随便搜索一下就有了。 取得MAC地址的方法:WIN+R,输入CMD,用"NBTSTAT -A IP地址" 查看。不过,我试过好像这能查看自己的ip和mac,如下 C:\Documents and Settings\hike>nbtstat -A 211.69.244.171 本地连接: Node IpAddress: [211.69.244.171] Scope Id: [] NetBIOS Remote Machine Name Table Name Type Status --------------------------------------------- 9D15D457A66C432<00> UNIQUE Registered 9D15D457A66C432<20> UNIQUE Registered WORKGROUP <00> GROUP Registered MAC Address = 00-E0-4A-01-BE-9C 如果查看别人的会显示: C:\Documents and Settings\hike>nbtstat -A 211.69.244.188 本地连接: Node IpAddress: [211.69.244.171] Scope Id: [] Host not found. 取得自己电脑IP与MAC的方法:WIN+R,输入CMD,用"IPCONFIG /ALL" 查看,还有一个快速查看mac的命令:“getmac”,也挺方便的。 下面是我强烈推荐的查看别人ip和mac的命令: 先用ping,ping通每一台机器,然后用arp -a 可列出所有刚才ping通的机器的网卡号。

ip地址和mac地址

ip地址和mac地址 ip地址就是你的机器在网络上面的门牌号码,子网掩码的作用就是告诉网络你的机器是处在哪一个小的子网络中。网关是你的机器通过什么服务器来访问的网络。mac地址是网卡在出厂的时候,制造商给网卡赋予的唯一的一个地址标识ip地址就是你的机器在网络上面的门牌号码,子网掩码的作用就是告诉网络你的机器是处在哪一个小的子网络中。网关是你的机器通过什么服务器来访问的网络。mac地址是网卡在出厂的时候,制造商给网卡赋予的唯一的一个地址标识MAC地址 MAC地址1212 一,MAC(Media Access Control, 介质访问控制)MAC地址是烧录在Network Interface Card(网卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特长(6字节),16进制的数字组成.0-23位是由厂家自己分配.24-47位,叫做组织唯一标志符(oganizationally unique ,是识别LAN(局域网)节点的标识。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。 也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,著名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(IEEE)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。 形象的说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。 如何获取本机的MAC? 对于数量不多的几台机器,我们可以这样获取MAC地址:在Windows 98/Me中,依次单击“开始”→“运行” →输入“winipcfg”→回车。即可看到MAC地址。 在Windows 2000/XP中,依次单击“开始”→“运行”→输入“CMD”→回车→输入“ipconfig /all”→回车。即可看到MAC地址。 修改网卡MAC地址的方法 其实更改网卡MAC地址的功能不论98还是2000,都已经提供了,只是平时大家都没有注意到而以。下面我就说说怎么更改。很简单哦。。。 一,好了,现在先来看看WIN2000。在桌面上网上邻居图标上点右键,选"属性",在出来的"网络和拨号连接"窗口中一般有两个图标,一个是"新建连接"图标,一个是"我的连

wifi下获取ip和mac地址

2. [代码][Java]代码 01//所需的权限 02 03 04 05--------------------------------------------------------------------- 06//布局 07 14 18 19 23------------------------------------------------------------------------------- 24//正文 25p a c k a g e c o m.w i f i; 26 27i m p o r t j a v a.n e t.I n e t A d d r e s s; 28i m p o r t j a v a.n e t.N e t w o r k I n t e r f a c e; 29i m p o r t j a v a.n e t.S o c k e t E x c e p t i o n;

获取MAC地址和IP地址的程序设计

获取MAC地址和IP地址的程序设计 通信0402班学号:0905040225 姓名:张玉海指导老师: 王国才 【设计目标】 通过设计程序能获取本计算机的MAC地址和IP地址并显示。 【设计原理和方法】 本程序设计包含两个部分:一、获取本机IP地址;二、获取本机MAC地址。我是通过VB编程实现的。 其中,为了获取本机的IP地址,要使用WinSock库,WinSock API是Microsoft Windows 的网络程序接口。应用程序在使用WinSock API之前,必须调用WSAstartup函数,只有调用函数成功返回(表示应用程序与WinSock库成功的简历其连接),应用程序才可以调用其他Windows Socketers .DLL中的函数。当程序将要结束时,又必须调用WSACleanup函数可以结束Windows Socketers .DLL的使用。WinSock规范定义了几个数据库的例程。其中我们要用到gethostname和gethostbyname两个函数来得到IP地址。gethostname可以获得主机名, gethostbyname函数能够从主机名得到对应的“主机”(由名字和地址标识),函数唯一的参数name就是前面调用gethostname函数得到的主机名,二返回值是一个hostent结构,他可以标识一个“主机”列表,hostent的最后一个分量hAddrList中,就可以得到与主机名对应的一个或多个IP地址,hAddrList是一个列表,通过它就可以得到所有的IP地址。 MAC地址也叫物理地址、硬件地址或链路地址,此程序设计的获取MAC地址是通过NetBIOS编程实现的。其中,要用到网络编程接口中的一个重要的概念,那就是LANA编号(LAN适配器编号,LANadaprer),每张物理网卡都会分配一个独一无二的LANA编号。要想调用NetBIOS API函数,需要链接系统的NETAPI.DLL文件NetBIOS API包含的内容其实分全场简单,因为实际上NetBIOS API只是一个函数NetBios ,在Visual Basic中可以这样引入: Private Declare Function Netbios Lib "netapi32.dll" (pncb As NET_CONTROL_BLOCK) As Byte 函数中唯一的参数pncb是一个指向某个网络控制块(NET_CONTROL_BLOCK)的指针,在那个NET_CONTROL_BLOCK结构中,包含了为执行一个NetBIOS命令,相应的NetBios函数需要用的的前部信息。NetBIOS提供了几个命令专门负责收集网络参数的命令,其中包括名字查找命令和适配器状态命令,利用适配器状态命令可以获得本地计算机及其LANA编号的有关信息,这就是查知其的MAC地址的一条可行路径。其中在网络适配器状态命令的ADAPTER_STA TUS结构中我们最为关心的就是adapter_address字段,它标识的就是网卡的MAC地址。

C语言获取IP和MAC码

首先看从C语音的几种方法比较起,看看如下,结果是获取IP和MAC码 C#遍历局域网的几种方法及比较 扫描局域网IP列表的几种方法 很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法, 下面我给大家介绍几种,供大家参考。 1、微软社区上介绍了使用Active Directory 来遍历局域网 利用DirectoryEntry组件来查看网络 网址:https://www.sodocs.net/doc/545393265.html,/china/communITy/program/originalarticles/techdoc/DirectoryEntry.mspx private void EnumComputers() { using(DirectoryEntry root = new DirectoryEntry("WinNT:")) { foreach(DirectoryEntry domain in root.Children) { Console.WriteLine("Domain | WorkGroup: "+https://www.sodocs.net/doc/545393265.html,); foreach(DirectoryEntry computer in domain.Children) { Console.WriteLine("Computer: "+https://www.sodocs.net/doc/545393265.html,); } } } } 效果评价:速度慢,效率低,还有一个无效结果 Computer: Schema 使用的过程中注意虑掉。 2、利用Dns.GetHostByAddress和IPHostEntry遍历局域网 private void EnumComputers() { for (int i = 1; i <= 255; i++) { string scanIP = "192.168.0." + i.ToString(); IPAddress myScanIP = IPAddress.Parse(scanIP); IPHostEntry myScanHost = null; try

C语言获取Linux系统的IP地址和MAC地址

实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地址是多少,每块网卡分配了几个IP(一个网卡对应多个IP)等等。 这些信息往往需要通过ifconfig指令来获得,对于程序员来说,在代码中调用外部的shell 指令可不是个最佳方案,因为没人能保障不同平台、不同版本的ifconfig指令输出的格式是一致的。本篇文章中将介绍通过ioctl函数实现上述需求。 #include int ioctl(int fd, int request, … ); 返回:成功返回0,失败返回-1 ioctl函数的参数只有3个,但却是Unix中少有的几个“家族类”复杂函数,这里摘录一段《Unix网络编程》一书中对ioctl函数的描述: 在传统上ioctl函数是用于那些普遍使用、但不适合归入其他类别的任何特殊的系统接口……网络程序(一般是服务器程序)中ioctl常用于在程序启动时获得主机上所有接口的信息:接口的地址、接口是否支持广播、是否支持多播,等等。 ioctl函数的第一个参数fd,可以表示一个打开的文件(文件句柄)或网络套接字,第二个和第三个参数体现了函数的家族特色,参数二request根据函数功能分类定义了多组宏,而参数三总是一个指针,指针的类型依赖于参数二request。因为ioctl的种类实在太多,这里只列出和本文相关的几个参数定义: 分类参数二(宏)参数三描述 接口SIOCGIFCONF struct ifconf 获得所有接口列表 SIOCGIFADDR struct ifreq 获得接口地址 SIOCGIFFLAGS struct ifreq 获得接口标志 SIOCGIFBRDADDR struct ifreq 获得广播地址 SIOCGIFNETMASK struct ifreq 获得子网掩码 上表中列出了两个相关的结构体:struct ifconf 和struct ifreq,要了解ioctl函数的具体运用,首先要了解这两个结构: struct ifconf { int ifc_len;

JS获取IP、MAC和主机名的几种方法

JS获取IP、MAC和主机名的几种方法 今天在搞JS(JavaScript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome、FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本。下面的代码是我在所有windowsNT5.0及以上的系统上都测试通过的,给出代码: 方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000): 获取客户端IP。 [html]view plaincopy 1. 2. 3.GetLocalIP 4. 5. 6.获取IP: 7. 8. 9. 方法二(所有的平台及浏览器): 获取客户端处在网络中的IP,前提是客户得联网。 [html]view plaincopy 1. 2. 3. 4.JavaScript获取客户端IP[利用新浪接口] 5. 6. 7.

IP地址与Mac地址绑定

IP地址与Mac地址绑定 拓扑图如下: 一、静态地址绑定: [SW1]user-bindstaticip-addressmac-address5489-9828-5BB1 Info:1staticuser-binditem(s)added. [SW1]user-bindstaticip-addressmac-address5489-9804-0D67 Info:1staticuser-binditem(s)added. 二、DHCP地址池中IP地址与Mac地址绑定 [SW1]ippool192network [SW1-ip-pool-192network]gateway-list [SW1-ip-pool-192network]networkmask [SW1-ip-pool-192network]excluded-ip-address SW1-ip-pool-192network]leaseday0hour12minute0 [SW1-ip-pool-192network]dns-list [SW1-ip-pool-192network] [SW1-ip-pool-192network]static-bindip-addressmac-address5489-986B-7896 注意在地址池中ip地址与Mac地址绑定时出现的错误: [SW1-ip-pool-192network]static-bindip-addressmac-address5489-983E-384D Error:Thestatic-MACisexistinthisIP-pool. 错误:这个静态MAC地址在地址池中已经存在。 ----DHCP已经给这个MAC地址分配IP了,不能绑定。 解决方法: 这个可能是因为这个MAC已经获取到其它IP了,你清空下DHCP地址池试试,普通视图用resetippool踢出来。 例如,resetippoolname1all?。 resetippool{interfaceinterface-name|nameip-pool-name}{low-ip-addresshigh-ip-address|all|conflict|expired|used} 参数说明 nameip-pool-nameIP地址池名称。字符串形式,长度范围是1~64。 interfaceinterface-name接口地址池名称,一般以接口类型和接口编号命名。字符串形式,长度范围是1~64。 low-ip-address地址段的起始地址。 high-ip-address地址段的结束地址。 all所有的地址。 conflict冲突的IP地址。 expired过期的IP地址,处于空闲状态。 used使用的IP地址。 视图 用户视图、系统视图 缺省级别 3:管理级 使用指南 resetippool命令用来重置指定的IP地址池的地址状态至空闲状态。指定地址段用来重置地址段内所有地址状态至空闲状态;指定all、conflict、expired、used等参数用来重置具体地址状态对应的地址。 三、基于vlan的IP地址与Mac绑定 [SW1]user-bindstaticip-addressmac-address1234-5678-3435vlan1

C# .net获取电脑IP和MAC

C# .net获取电脑IP和MAC ///

/// 取得用户客户端IP(穿过代理服务器取远程用户真实IP地址) /// public static string GetClientIP() { //如果使用代理,获取真实IP string userip = string.Empty; if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORW ARDED_FOR"] != "") { userip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } else { userip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; } if (userip == null || userip == "") { userip = https://www.sodocs.net/doc/545393265.html,erHostAddress; } return userip; //HttpRequest Request = HttpContext.Current.Request; //try //{ // if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) // { // return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // } // else // { // return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); // } //} //catch { return "127.0.0.1"; } }

MAC与IP的关系

MAC与IP的关系 对于MAC地址,由于我们不直接和它接触,所以大家不一定很熟悉。现在有很多计算机都是通过先组建局域网,然后通过交换机和Internet连接的。然后给每个用户分配固定的IP地址,由管理中心统一管理,这样为了管理方便就需要使用Mac地址来标志用户,防止发生混乱,明确责任(比如网络犯罪)。另外IP地址和Mac地址是有区别的,虽然他们在局域网中是一一对应的关系。IP地址是跟据现在的IPv4标准指定的,不受硬件限制比较容易记忆的地址,而Mac 地址却是用网卡的物理地址,多少与硬件有关系,比较难于记忆。MAC (Media Access Control, 介质访问控制)地址是识别LAN(局域网)节点的标识。MAC地址是固化在网卡上串行EEPROM中的物理地址,通常有48位长。(每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进制数08:00:20代表网络硬件制造商的编号, 它由IEEE(Istitute of Electrical and Electronics Engineers,电气与电子工程师协会)分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个网络产品(如网卡)的系列号。每个网络制造商必须确保它所制造的每个以太网设备都具有相同的前三个字节以及不同的后三个字节。这样就可保证世界上每个以太网设备都具有唯一的MAC地址。 既然每个以太网设备在出厂时都有一个唯一的MAC地址了,那为什么还需要为每台主机再分配一个IP地址呢?或者说为什么每台

主机都分配唯一的IP地址了,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC地址呢? 主要原因有以下几点: (1)IP地址的分配是根据网络的拓朴结构,而不是根据谁制造了网络设置。 若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓朴位置基础上,这种方案是不可行的。 (2)当存在一个附加层的地址寻址时,设备更易于移动和维修。例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。 (3)无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。)以太网交换机根据某条信息包头中的MAC源地址和MAC目的地址实现包的交换和传递。 网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。 也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,

socket获取ip mac mask

#include #include #include #include #include #include #include int main() { char*mac=(char*)malloc(16); char*ip=(char*)malloc(16); char*mask=(char*)malloc(16); getIpMask(ip,mask,mask); printf("ip is%s\n",ip); printf("mask is%s",mask); free(mac); free(ip); free(mask); return0; } int getIpMask(char*ip,char*mask,char*mac) { //ip=(char*)malloc(20); //char netmask[20]; //mask=netmask; struct sockaddr_in*addr; struct sockaddr sa; struct ifreq ifr; char*address; int sockfd; sockfd=socket(AF_INET,SOCK_DGRAM,0); strncpy(ifr.ifr_name,"eth0",IFNAMSIZ-1); if(ioctl(sockfd,SIOCGIFADDR,&ifr)==-1) return1; addr=(struct sockaddr_in*)&(ifr.ifr_addr); address=inet_ntoa(addr->sin_addr); strncpy(ip,address,20); printf("inet addr:%s",ip); if(ioctl(sockfd,SIOCGIFBRDADDR,&ifr)==-1) return1; addr=(struct sockaddr_in*)&ifr.ifr_broadaddr; address=inet_ntoa(addr->sin_addr);

VC获取IP和MAC地址

VC取得机器的MAC地址 包含库文件ws2_32.lib,iphlpapi.lib,如果用VS2005,最好把这两个库放在工程中,然后打开项目,在项目——属性——配置属性——链接器——输入——附加依赖项当中,输入这两个库文件。 以下程序是取得PC机或ARM IP地址,而后用IP地址取得MAC地址。 需要包含以下头文件 #include"windows.h" #include"showdlg.h" #include #include"Winsock2.h" void CARM_TestDlg::ForArm() { //获得IP地址 WSADATA wsaData; char name[155]; char * ip; PHOSTENT hostinfo; if(WSAStartup(MAKEWORD(2,0),&wsaData)==0) { if((gethostname(name,sizeof(name))==0)) { if((hostinfo=gethostbyname(name))!=NULL) { ip=inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list); } } WSACleanup(); } //获得MAC地址 HRESULT hr; IPAddr ipAddr; ULONG pulMac[2]; ULONG ulLen; ipAddr = inet_addr(ip);//设备自身的ip "192.168.201.183" memset (pulMac, 0xff, sizeof (pulMac)); ulLen = 6; hr = SendARP (ipAddr, 0, pulMac, &ulLen); PBYTE pbHexMac = (PBYTE) pulMac; CString str=_T(""),str1; int i; for(i=0;i

用C#获得本机IP和Mac

用C#获得本机IP和Mac using System; using System.Collections.Generic; using System.Text; using https://www.sodocs.net/doc/545393265.html,; using System.Management; namespace exp_01_1021 { class Program { static void Main(string[]args) { getHostInfo HostInfo=new getHostInfo(); string IP=HostInfo.getIP(); string Mac=HostInfo.getMac(); Console.WriteLine("Local IP:{0}",IP); Console.WriteLine("MacAddress:{0}",Mac); Console.ReadLine(); } } class getHostInfo { public string getIP()//获取IP { string HostName=Dns.GetHostName();//得到主机名 IPHostEntry IpEntry=Dns.GetHostEntry(HostName);//得到主机IP string strIPAddr=IpEntry.AddressList[0].ToString(); return(strIPAddr); } public string getMac()//获取Mac { string MacAddr=null; ManagementObjectSearcher Query=new ManagementObjectSearcher("select* fromWin32_NetworkAdapterConfiguration"); ManagementObjectCollection QueryCollection=Query.Get(); foreach(ManagementObject mo in QueryCollection) { if(mo["IPEnabled"].ToString()=="True") MacAddr=mo["MacAddress"].ToString(); } return(MacAddr); } }

相关主题