概述
BOOL DhcpNotifyConfigChange(
LPWSTR lpwszServerName, // 本地机器为NULL
LPWSTR lpwszAdapterName, // 适配器名称
BOOL bNewIpAddress, // TRUE表示更改IP
DWORD dwIpIndex, // 指明第几个IP地址,如果只有该接口只有一个IP地址则为0
DWORD dwIpAddress, // IP地址
DWORD dwSubNetMask, // 子网掩码
int nDhcpAction ); // 对DHCP的操作 0:不修改, 1:启用 DHCP,2:禁用 DHCP
上面对于DhcpNotifyConfigChange的介绍我是在http://www.vckbase.com/index.php/wv/645上面看到的。
这段时间有个需求就是讲网卡设置成两个IP,接受到修改ip的命令后,将第二个IP设置成另外一个IP,在网上看到的现成的例子都是修改单IP的。
双IP修改和单IP差不多,例如
RegSetValueEx(hKey, "IPAddress", 0, REG_MULTI_SZ, (unsigned char *)mszIPAddress, nIP);
单ip的话mszIPAddress的格式是 “192.168.1.11”+0x00,双IP的话格式是 “192.168.1.11”+0x00+“192.168.1.12”+0x00,字符串之间是以0x00分割的。
开始不知道只是看注册表的键值是换行的形式,试过“192.168.1.11n192.168.1.12” ....都不行,最后发现是用0x00分割。子网掩码也是一样。
char mszIPAddress[100];
char mszNetMask[100];
int nIP, nMask;
strncpy(mszIPAddress, "192.168.60.43", 98);//pIPAddress
strncpy(mszNetMask, "255.255.255.0", 98);//pNetMask
nIP = strlen("192.168.60.43");
nMask = strlen("255.255.255.0");
*(mszIPAddress + nIP + 1) = 0x00;
strncpy(mszIPAddress+nIP + 1, "10.1.1.83", 30);//pIPAddress
*(mszIPAddress + nIP+strlen("10.1.1.83") + 2) = 0x00;
nIP = nIP+strlen("10.1.1.83") + 3;
*(mszNetMask + nMask + 1) = 0x00;
strncpy(mszNetMask+nMask + 1, "255.255.255.0", 30);//pIPAddress
*(mszNetMask + nMask*2 + 2) = 0x00;
nMask +=nMask*2 + 3;
RegSetValueEx(hKey, "IPAddress", 0, REG_MULTI_SZ, (unsigned char *)mszIPAddress, nIP);//第一IP是192.168.60.43第二ip是10.1.1.83
然后就是给系统发送通知消息了,DhcpNotifyConfigChange的使用方法网上很多,就不介绍了,主要说一下参数。
例如,原ip1:192.168.60.43 ip2:192.168.60.83 现在修改成ip1:192.168.60.43 ip2:192.168.60.66,只有ip2修改了,所以
DhcpNotifyConfigChange(NULL, wcAdapterName, TRUE, 1, inet_addr("192.168.60.66"), inet_addr("255.255.255.0"), 0)
我发现如果DhcpNotifyConfigChange(NULL, wcAdapterName, TRUE, 0, inet_addr("192.168.60.43"), inet_addr("255.255.255.0"), 0)的话,也可以达到效果
但是修改之后可以ping通三个地址 192.168.60.43 192.168.60.83 192.168.60.66,已经被修改的192.168.60.83 也可以ping通,这不符合我的要求。
给我的感觉是不管改不改注册表,只要机器不重启,DhcpNotifyConfigChange就可以让一个不存在的IP通信。
上面是我实验的结果,还有好多没有涉及到的情况,只做参考,欢迎讨论指正
最后
以上就是悲凉白昼为你收集整理的DhcpNotifyConfigChange通知IP修改,双IP设置的全部内容,希望文章能够帮你解决DhcpNotifyConfigChange通知IP修改,双IP设置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复