程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi編寫IP地址轉換器

用Delphi編寫IP地址轉換器

編輯:Delphi

現在學校和公司的朋友們大都遇到過這種情況吧:計算機需要經常在互聯網和局域網之間轉換,每次轉換除了換網線外,還需要修改網絡配置(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控件選擇要使用哪個網絡,然後點擊"確定"按鈕即可。

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;

這樣,功能就實現了,這個小軟件簡單易用,在我周圍的同學中已經廣為流傳,希望大家能夠從中學習到簡單易行的網絡配置方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved