利用Delphi编制IP地址转换器

豆豆网   技术应用频道   2006年07月31日  【字号: 收藏本文

本文详细介绍利用Delphi编制IP地址转换器

  现在学校和公司的朋友们大都遇到过这种情况吧:计算机需要经常在互联网和局域网之间转换,每次转换除了换网线外,还需要修改网络配置(IP地址、网关、DNS等等),相当麻烦。如何能在一个窗口中一步实现呢?有些公司提供了软件如:IPChanger、EasyProxy等等,但是很遗憾这些软件都不是免费软件,只能试用一段时间。

  因此,笔者经过尝试,调试出一个非常简单、易行的方法,供大家参考使用。

  首先看一下原理:

  Window的netsh命令通过创建和调用记录网络配置的文本文件即可修改网络配置。主要包括一下两个命令:

  Netsh interface dump > 相对路径\ netcfg1.txt

  这条命令可以将计算机现有的网络配置保存在netcfg1.txt文件中。

  Netsh -f netcfg1.txt

  这条命令即可将netcfg1.txt文件中保存的网络配置应用到计算机中。

  基于以上的两条命令,笔者利用Delphi6.0编制小程序,将它进一步完善。运行结果如下图所示:

  如上图所示,小软件主要功能分成两部分:网络设置和网络替换。因为一个计算机绝大多数是在两个网络中互换,所以本程序只实现了两个网络的互换,更多的网络间互换道理是相同的。

  网络设置"互联网"和"局域网"两个Button的单击事件是将左侧网络设置区的IP地址、网关、DNS等信息记录到文本中。其中遇到的两个主要困难是IP地址的录入时的出错情况处理和保存文本文件。

  代码如下:

  procedure TForm1.BitBtn2Click(Sender: TObject); //"局域网"按钮的单击事件
begin
 FileAppendProc1();
 RadioButton2.Checked:=true;
end;
procedure TForm1.FileAppendProc1(); //保存文件的函数
 var NetFile : TextFile;
 NetFilename : string;
 FileAppend,tempStr : string;
begin
 NetFilename :='netcfg2.txt';
 FileAppend :=S5+MaskEdit1.Text+S1+MaskEdit2.Text+S2+MaskEdit3.Text+S3+S4;
 //MessageDlg('This is commend'+FileAppend,mtInformation,[mbOK],0);
 AssignFile(Netfile,'net.txt'); //net.txt文件要放在应用程序的同一目录中
 Reset(NetFile);
 begin
 try
  Memo1.Lines.Text:='';
  while not Eof(NetFile) do
  begin
   Readln(NetFile,tempStr);
   Memo1.Lines.Add(tempStr) ;
  end;
  finally
 begin
  CloseFile(NetFile);
 end;
end;
AssignFile(Netfile,NetFilename);
Rewrite(NetFile);
try
 Writeln(NetFile,'');
 finally
 CloseFile(NetFile);
end;
 Memo1.Lines.Add(FileAppend);
 Memo1.Lines.SaveToFile(NetFilename);
end;
end;
procedure TForm1.MaskEdit1Exit(Sender: TObject); //IP地址输入出错处理
 var ip1,ip2,ip3,ip4: Integer;
begin
 if (copy(MaskEdit1.Text,1,3)=' ') or (copy(MaskEdit1.Text,5,3)=' ') or  (copy(MaskEdit1.Text,9,3)=' ') or (copy(MaskEdit1.Text,13,3)=' ') then
 begin
  showmessage('请注意,不能有空域值') ;
  MaskEdit1.SetFocus;
 end;
 if (copy(MaskEdit1.Text,1,3)<>' ') and (copy(MaskEdit1.Text,5,3)<>' ') and   (copy(MaskEdit1.Text,9,3)<>' ') and (copy(MaskEdit1.Text,13,3)<>' ') then
 begin
  ip1:=strtoint(trim(copy(MaskEdit1.Text,1,3)));
  ip2:=strtoint(trim(copy(MaskEdit1.Text,5,3)));
  ip3:=strtoint(trim(copy(MaskEdit1.Text,9,3)));
  ip4:=strtoint(trim(copy(MaskEdit1.Text,13,3)));
  if (ip1<0) or (ip1>254) or (ip2<0) or (ip2>254) or(ip3<0) or (ip3>254) or (ip4<0) or (ip4>254) then
  begin
   showmessage('您的输入不正确,请重新输入!');
   MaskEdit1.SetFocus;
  end;
 end;
end;

  右侧网络替换功能的编制相对简单些,通过两个radiobutton控件选择要使用哪个网络,然后点击"确定"按钮即可。

作者:张志远    责编:豆豆技术应用

正在加载评论...