网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi中编程控制系统IP配置
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
说明如何更新动态IP和修改静态网络配置信息。
2.1 DhcpEnabled = 1 则说明本地IP为DHCP服务器动态分配,调用IpReleaseAddress和IpRenewAddress可释放、重新获得系统IP地址。函数定义如下:
function IpRenewAddress(
var AdapterInfo: TIP_ADAPTER_INDEX_MAP): DWORD;
stdcall; external ''IPHLPAPI.DLL'';
function IpReleaseAddress(
var AdapterInfo: TIP_ADAPTER_INDEX_MAP): DWORD;
stdcall;external ''IPHLPAPI.DLL'';
使用这两个函数必需获取网络接口信息,以指定释放、更新IP地址的适配器索引号。一个网络接口是网卡的逻辑抽象,它们是一对一的关系。注意调用GetNumberOfInterfaces函数返回本机接口的数量,实际上比网络接口数目多一个,因为每个系统都附加有一个调试用的网络接口,这个接口的IP地址是127.0.0.1子网掩码是255.0.0.0。GetInterfaceInfo函数提取网络接口的信息:
function GetInterfaceInfo(pIfTable: PTIP_INTERFACE_INFO;
dwOutBufLen: PULONG): DWORD;
stdcall; external ''IPHLPAPI.DLL'';
它返回IP_INTERFACE_INFO结构中有一个NumAdapters整型的数据域记录了当前本机适配器数量,Adapter为IP_ADAPTER_INDEX_MAP结构的数据数组。
PIP_INTERFACE_INFO = ^TIP_INTERFACE_INFO;
TIP_INTERFACE_INFO = record
NumAdapters : Longint;
Adapter : array [0..1-1] of IP_ADAPTER_INDEX_MAP;
end;
其中的IP_ADAPTER_INDEX_MAP结构如下:
PIpAdapterIndexMap = ^TIpAdapterIndexMap;
TIP_ADAPTER_INDEX_MAP = record
Index: ULONG;
Name: array [0..127] of WCHAR;
end;
当此结构中Index值等于通过调用GetAdaptersInfo函数pAdapterInfo指向的结构中Index域的值,说明网络适配器和网络接口相匹配,就可调用IpReleaseAddress和IpRenewAddress进行释放、重新获得该适配器IP地址。
2.2 在Delphi中通过直接使用Netsh.exe实用程序可改变windows2000/XP系统的IP网络配置信息。

三、程序实现
    3.1 在WIN98中运行Winipcfg实用程序, 在windows2000/XP中运行Ipconfig可释放、重新获得系统(所有)IP地址。下面用Delphi编程实现:
首先声明Public IndexStrs : Tstrings; //保存本机所有网卡索引号
procedure TForm1.Button1Click(Sender: TObject);
var
Err, BufLen : DWORD;
P : Pointer;
AdapterInfo : PTIP_ADAPTER_INFO;
begin
BufLen := SizeOf( AdapterInfo^ );
New( AdapterInfo );
Err := GetAdaptersInfo( AdapterInfo, @BufLen );
P := AdapterInfo;
IndexStrs:=Tstringlist.Create;
if Err =NO_ERROR then
begin
while P <> nil do
with TIP_ADAPTER_INFO(P^) do
begin
if DHCPEnabled = 1 then
IndexStrs.Add(inttostr(index));
P := Next; // TIP_ADAPTER_INFO(P^).Next
end // with
end // while
else
showmessage( SysErrorMessage( Error ) );
Dispose( AdapterInfo );
end;
Button1的Click事件:当本地IP为DHCP服务器动态分配时把本地机器所有网卡索引号存于TStrings类型IndexStrs中。
procedure TForm1.Button2Click(Sender: TObject);
var
Res, Err,Suc,BufSize : DWORD;
ip_map: TIP_ADAPTER_INDEX_MAP;
cnt,dwIndex,i :Longint;
InterfaceInfo:PTIP_INTERFACE_INFO;
begin
BufSize :=sizeof(Interfaceinfo^);
Interfaceinfo := AllocMem(BufSize);
Err:= Getinterfaceinfo(Interfaceinfo,@BufSize);
if Err = ERROR_INSUFFICIENT_BUFFER then
begin
Freemem(

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号