※==================================================================
※本连载文章说明:
※1、连载首发于《软件报》(http://www.sweek.com)2006年21期(2006年5月22日);
※2、此次网上连载采用的是原稿件结构,内容与《软件报》发表略有不同;
※3、谢绝除《软件报》及其相关刊物之外的传统媒体部分或全部转载;
※4、谢绝任何收费媒体、网络转载;
※5、原作者:uruseibest ,blog:http://blog.csdn.net/uruseibest;
※6、如有其它疑问,请联系作者;
※7、如有转载,必须连同本说明一并发表,否则将追究转载者责任。
※======================================================================
第十八节 在本地电脑的地址解析协议(ARP :Address Resolution Protocol)表中创建和删除一个ARP
1、函数:
①Private Declare Function CreateIpNetEntry Lib "iphlpapi.dll" (pArpEntry As MIB_IPNETROW) As Long
参数说明:
pArpEntry [输入] 指向一个指定了新接口信息的MIB_IPNETROW类型,调用者必须为这个类型指定所有成员的值。
返回值:成功,返回0;失败,返回错误代码。
②Private Declare Function DeleteIpNetEntry Lib "iphlpapi.dll" (pArpEntry As MIB_IPNETROW) As Long
参数说明:
pArpEntry:[输入] 指向一个MIB_IPNETROW类型。这个类型结构指定了要删除的接口。调用者至少要为这个类型指定dwIndex和 dwAddr成员的值。
返回值:成功,返回0;失败,返回错误代码。
③inet_addr是Winsocket的函数而非”iphlpapi.dll”提供的函数,目的是将标准IP地址(”xxx.xxx.xxx.xxx”)的字符串转为电脑能识别的长整型的数据。
Private Declare Function inet_addr Lib "wsock32.dll" (ByVal cp As String) As Long
参数说明:
cp:[输入] 标准IP地址(”xxx.xxx.xxx.xxx”)的字符串
返回值:成功,返回长整型的数据。
2、使用到的类型:
①MIB_IPNETROW 包含地址解析协议(ARP :Address Resolution Protocol)接口信息:
参看 本章 第十节 2 ②
3、使用到的常量:
Const MAXLEN_PHYSADDR = 7
4、主要代码分析:
Dim MI As MIB_IPNETROW
MI.dwIndex = 2
MI.dwAddr = inet_addr("xxx.xxx.xxx.5") ‘括号内为要设置Arp的IP地址
MI.bPhysAddr(0) = 0
MI.bPhysAddr(1) = 80
MI.bPhysAddr(2) = 80
MI.bPhysAddr(3) = 80
MI.bPhysAddr(4) = 80
MI.bPhysAddr(5) = 80
MI.bPhysAddr(6) = 0
MI.bPhysAddr(7) = 0
MI.dwPhysAddrLen = 6
MI.dwType = 3
rvalue = CreateIpNetEntry(MI)
5、运行时截图: