<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      5種查詢Internet連接狀態[含IP]的方法

      [摘要]1.Powersock 控件法:這種方法最簡單,利用FastNet頁的 Powersock控件的LocalIP屬性即可判斷:if(Powersock1->LocalIP=="127.0.0.1"):在線else:離線特點:[1]判斷連接狀態,[2]獲得本地IP。2.使用U...
      1.Powersock 控件法:
      這種方法最簡單,利用FastNet頁的 Powersock控件的LocalIP屬性即可判斷:
      if(Powersock1->LocalIP=="127.0.0.1"):在線
      else:離線
      特點:[1]判斷連接狀態,[2]獲得本地IP。

      2.使用URL.DLL的InetIsOffline(0) 函數:
      Win2K:URL.DLL存放在\SYSTEM32\;
      Win9x:URL.DLL存放在\SYSTEM\;
      用GetSystemDirectory(...)得到系統目錄。
      InetIsOffline(0)返回值:
      TRUE: 離線; FALSE:在線。
      特點:判斷連接狀態。

      3.WinSock編程法:見程序
      特點:[1]判斷連接狀態;[2]獲得本地IP和主機名。

      4.WinInet.DLL的InternetGetConnectedState(&dwFlag,0)函數:
      注意:為使用該函數,須在項目文件中加入:USELIB("WinInet.LIB")
      特點:獲得較詳的連接描述!

      5.RASAPI32.DLL的RasEnumConnections函數:
      要使用該“枚舉所有活動連接”函數,必須:
      #include "ras.h"。

      若連接數>0:本機當前已連入Internet;
      否則: 本機當前未連入Internet;

      源碼如下,在[BCB5 + WIN2K + 撥號上網]下通過(N字頭的為菜單項):

      -------------Powersock控件法-----------------------------------------
      void __fastcall TForm1::N11Click(TObject *Sender)
      {
      if(Powersock1->LocalIP=="127.0.0.1")
      ShowMessage("未連接:"+Powersock1->LocalIP);
      else ShowMessage("已連接:"+Powersock1->LocalIP);
      }


      -------------URL.DLL的InetIsOffline函數法----------------------------
      HINSTANCE hDLL;
      typedef bool __stdcall(*FUN)(int); 定義DLL函數指針FUN
      FUN isOffLine;
      void __fastcall TForm1::N21Click(TObject *Sender)
      {
      char Buffer[MAX_PATH];
      GetSystemDirectory(Buffer,MAX_PATH);
      hDLL=LoadLibrary((AnsiString(Buffer)+"\\URL.DLL").c_str());
      if(hDLL==NULL){ ShowMessage("Cannot load URL.DLL! Return... "); return; }
      isOffLine=(FUN)GetProcAddress(hDLL,"InetIsOffline");
      if(isOffLine==NULL){ ShowMessage("Cannot load InetIsOffline(int), Return..."); return; }
      if(!isOffLine(0)) ShowMessage("已連接");
      else ShowMessage("未連接");
      FreeLibrary(hDLL);
      }


      ------------WinSock法------------------------------------------------
      void __fastcall TForm1::N31Click(TObject *Sender)
      {
      WORD wVersionRequested;
      WSADATA wsaData;
      wVersionRequested=MAKEWORD(1,1); Start up WinSock
      WSAStartup(wVersionRequested,&wsaData);
      -----------------------------------------
      hostent *p; char *p2; char s[128];
      gethostname(s,128); Get the computer name
      p=gethostbyname(s);
      p2=inet_ntoa(*((in_addr *)p->h_addr)); Get the IpAddress
      -----------------------------------------
      AnsiString LocationIP=p2;
      if(LocationIP=="127.0.0.1")
      ShowMessage("未連接:"+LocationIP);
      else ShowMessage("已連接:"+LocationIP);
      WSACleanup();
      }


      -----------WinInet.DLL的InternetGetConnectedState函數法----------------
      void __fastcall TForm1::N41Click(TObject *Sender)
      {
      StaticText1->Caption=""; StaticText2->Caption=""; StaticText3->Caption="";
      StaticText4->Caption=""; StaticText5->Caption=""; StaticText6->Caption="";
      StaticText7->Caption="";
      DWORD dwFlag;
      InternetGetConnectedState(&dwFlag,0);
      if(dwFlag & INTERNET_CONNECTION_MODEM) StaticText1->Caption="Yes"; MODEM連接
      else StaticText1->Caption="No";
      if(dwFlag & INTERNET_CONNECTION_LAN) StaticText2->Caption="Yes"; LAN連接
      else StaticText2->Caption="No";
      if(dwFlag & INTERNET_CONNECTION_PROXY) StaticText3->Caption="Yes"; 代理連接
      else StaticText3->Caption="No";
      ---------檢查是否連接-------------------------------------------
      if(InternetGetConnectedState(NULL,0)) StaticText4->Caption="Yes"; 在線
      else StaticText4->Caption="No";
      if(dwFlag & INTERNET_CONNECTION_OFFLINE) StaticText5->Caption="Yes";//離線。注:不好用!
      else StaticText5->Caption="No";
      ----------------------------------------------------------------
      if(dwFlag & INTERNET_RAS_INSTALLED) StaticText6->Caption="Yes";
      else StaticText6->Caption="No";
      if(dwFlag & INTERNET_CONNECTION_CONFIGURED) StaticText7->Caption="Yes";
      else StaticText7->Caption="No";
      }
      ----------RASAPI32.DLL的RasEnumConnections函數法---------------------------
      #include "ras.h"
      void __fastcall TForm1::N51Click(TObject *Sender)
      {
      RASCONN RASconn[256]; 活動連接數組
      DWORD BuffSize; 數組所占內存大;
      DWORD ConnNum; 活動連接數目
      RASconn[0].dwSize=sizeof(RASCONN); 必須指定一個連接[數組元素]的內存大小;
      BuffSize=sizeof(RASCONN)*256;
      DWORD dwReturn=RasEnumConnections(RASconn,&BuffSize,&ConnNum);
      if(dwReturn==0)
      {
      if(ConnNum>0) ShowMessage("已連接。當前激活連接數:"+AnsiString(ConnNum));
      else ShowMessage("未連接。當前激活連接數:"+AnsiString(ConnNum));
      }
      else ShowMessage("RasEnumConnections函數失敗!");



      日韩精品一区二区三区高清