#include <sys/types.h>
#include <netinet/in.h>
#include <stdio.h>
/*
* Check whether "cp" is a valid ascii representation
* of an MAC address and convert to a binary address.
* Returns 1 if the address is valid, 0 if not.
*/
int inet_mton(const char *cp, u_char *ap)
{
int colons = 0;
quad_t acc = 0, addr = 0;
do {
register char cc = *cp;
switch (cc) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
acc = acc * 16 + (cc - '0');
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
acc = acc * 16 + (cc - 'a' + 10);
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
acc = acc * 16 + (cc - 'A' + 10);
break;
case ':':
if (++colons > 5) {
return 0;
}
/* Fall down to case '\0' */
case '\0':
if (acc > 0xFF) {
return 0;
}
addr = addr << 8 | acc;
acc = 0;
break;
default:
return 0;
}
} while (*cp++) ;
/* Normalize the address */
if (colons < 5) {
addr <<= 8 * (5 - colons) ;
}
/* Store it if requested */
if (ap) {
/* Convert address to network bytes order(big-endian) */
#if __BYTE_ORDER == __LITTLE_ENDIAN
int i = 0, j = 0;
for(i=0,j=5; i<6,j>=0; i++,j--){
ap[i] = ((u_char *) &addr)[j];
}
#elif __BYTE_ORDER == __BIG_ENDIAN
ap = (u_char *) &addr;
#endif
}
return 1;
}
int main()
{ /* test inet_mton(const char *cp, u_char *ap) */
char *macaddr = "00:06:1B:D1:73:1F";
u_char m_addr[6];
printf("%s\n", macaddr);
if(inet_mton(macaddr, m_addr)){
int i = 0;
for(i=0; i<6; i++){
printf("%2x:", m_addr[i]);
}
}
return 0;
}
分享到:
相关推荐
以太网是目前最常见的局域网技术,其报文格式包括MAC头部,包含了源和目标的物理地址;而PPP则用于点对点连接,报文结构包括PPP头部、LCP(Link Control Protocol)或NCP(Network Control Protocol)协议字段等。 ...
一个完整的EthernetV2帧包括7字节的前导符、1字节的帧首定界符、6字节的目的MAC地址、6字节的源MAC地址、2字节的类型字段(或者802.3的长度字段)以及46到1500字节的数据字段,最后是4字节的帧尾校验(FCS)。...
在IT领域,文本文件(如.txt)和二进制文件(如.bin)是两种常见的数据存储格式,它们各自有着不同的用途和特点。本教程将详细解释如何将一个TXT文件转换成BIN文件,以及这种转换背后的基本概念。 首先,我们要了解...
8. ARP:地址解析协议(Address Resolution Protocol)用于将网络层(IP层)地址解析为数据链路层的物理地址(MAC地址)。 二、网络工具和软件 1. Wireshark:一种网络协议分析器,它可以捕获和交互式地浏览网络上...
《Bat-To-Exe-Converter:JavaFX将批处理文件转换为可执行程序》 在IT行业中,有时候我们需要将批处理脚本(.bat文件)转换为可执行程序(.exe文件),以便在不同的计算机环境中方便地运行。Bat-To-Exe-Converter是...
这个"完整版如何将文本转换为UTF-8码 .e.rar"压缩包文件很可能包含了一个详细的教程或工具,教你如何将文本文件从其他编码格式转换为UTF-8编码。 首先,我们需要理解什么是UTF-8。UTF,全称为Unicode ...
- ARP(Address Resolution Protocol):地址解析协议,用于将IP地址解析为物理地址(如MAC地址)。 - RARP(Reverse Address Resolution Protocol):反向地址解析协议,用于将物理地址转换为IP地址。 6. 路由与...
nbtstat命令用于查看TCP/IP上的NetBIOS信息,可以获取远程主机的NETBIOS信息,包括其MAC地址等,需知目标IP地址。使用`-a`参数可以仅通过目标计算机名来获取其NETBIOS信息,无需IP地址。 ### 知识点三:网络路径...
- **PPP协议**: PPP(Point-to-Point Protocol)协议是一种广泛使用的数据链路层协议,用于通过串行线路连接到网络,支持动态IP地址分配等功能。 - **曼彻斯特编码**: 曼彻斯特编码是一种自同步的编码方法,通过对每...
6. 地址解析协议(Address Resolution Protocol,ARP)负责将IP地址转换为硬件地址(MAC地址),以便于数据在网络中的物理传输。 7. 熟知端口(Well-known Port)是Internet Assigned Numbers Authority(IANA)...
子程序 Hex2Bin, 字节集, 公开, 十六进制文本到字节集 .参数 原文, 文本型 .子程序 Hex2Bin1, 文本型, 公开, 文本型->文本型 .参数 Hex, 文本型 .子程序 Hex2Dec, 整数型, 公开, 十六到十 .参数 十六进制转换数据,...
32. MAC地址:Media Access Control address,网络设备的物理地址,用于在网络中唯一标识设备。 33. OSPF(开放最短路径优先):Open Shortest Path First,一种用于自治系统内部的链接状态路由协议,用于计算和...
- ARP (Address Resolution Protocol) 用于将IP地址转换为物理地址(如MAC地址),是网络层到数据链路层转换的关键协议之一。 16. **地址转换技术** - 地址转换技术(NAT)主要用于解决私有网络中使用私有IP地址...
6. 校园网架构:通常采用客户-服务器(Client-Server)或对等网络(Peer-to-Peer)模式,资源分布可以是集中式或分布式。 7. 运输层服务:包括无连接服务(如UDP)和面向连接服务(如TCP),前者不保证数据顺序和...
* MAC 地址(Media Access Control Address)是一种网络地址,用于在网络中标识设备。 5.5 以太网帧结构、基带传输、曼彻斯特编码 * 以太网帧结构(Ethernet Frame Structure)是一种网络数据包结构,用于在以太网...
7. **TTL**:在IP数据包中,TTL(Time To Live)字段用于限制数据包在网络中的生存时间,当TTL值减到0时,该数据包会被丢弃。 8. **HTTP协议**:浏览器与Web服务器之间通信通常采用HTTP(超文本传输协议)或HTTPS...
MAC地址是网络设备如网卡的物理地址,通常由六组两进制数字组成,每组用冒号或破折号分隔,每组可以表示为12位十六进制数。而IP地址是互联网上的逻辑地址,分为IPv4和IPv6两种,IPv4由四个十进制数构成,每个数范围0...