首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

用Delphi编制IP地址转换器解决思路

2012-03-11 
用Delphi编制IP地址转换器现在学校和公司的朋友们大都遇到过这种情况吧:计算机需要经常在互联网和局域网之

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

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

  首先看一下原理:

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

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

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

Netsh   -f   netcfg1.txt

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

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

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

  网络设置 "互联网 "和 "局域网 "两个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控件选择要使用哪个网络,然后点击 "确定 "按钮即可。


procedure   TForm1.Button1Click(Sender:   TObject);   // "确定 "按钮的单击事件
begin
      if   RadioButton1.Checked   then   winexec( 'netsh   -f   netcfg1.txt ',sw_normal)   ;
      if   RadioButton2.Checked   then   winexec( 'netsh   -f   netcfg2.txt ',sw_normal)   ;
end;  
 


  这样,功能就实现了,这个小软件简单易用,在我周围的同学中已经广为流传,希望大家能够从中学习到简单易行的网

[解决办法]
哥们,这篇文章好像在哪里见过,内容一模一样,当时看的还有图片。
[解决办法]
写的不错!~给你顶起来!~
[解决办法]
3q
[解决办法]
关注

热点排行