程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 基於 Web 的程序版本檢查

基於 Web 的程序版本檢查

編輯:關於C語言

 

    現在的很多程序都可以通過 Internet 進行版本更新,Windows 操作系統本身的“Windows Update”就是一個典型的例子。要實現這種特性,首先必須對應用程序的版本進行檢查。那麼如何通過 Internet 對自己的程序進行版本檢查呢?
   
   但是,如果僅僅是為了檢查程序的版本,那麼可以將新的版本信息以文本形式保存在 Web 站點上,需要時通過 FTP 獲取文件信息。下載 文件的操作可以通過現成的 Windows Internet API 來實現,也就是大家都熟悉的 WinInet,如果你沒有用過它,沒關系,本文會詳細講述如何用它來編寫FTP程序。WinInet 的使用不難,他有固定的套路:第一步創建一個連接;第二步創建一個 FTP 會話;第三步打開文件;第四步讀取文件數據,就這麼簡單。用代碼表示就象下面這樣:

         HINTERNET h = InternetOpen(...);
         HINTERNET hftp = InternetConnect(..,INTERNET_SERVICE_FTP,..);
         HINTERNET hftpfile = FtpOpenFile(...);
         InternetReadFile(...);

    下面就讓我們深入細節,享受精彩。為了方便代碼的重用,我寫了類 CWebVersion,這個類對所有細節進行了封裝,實現的功能很簡單:就是通過 Web 來獲取程序版本信息,實現版本的檢查。這個類的使用也很方便:

if (CWebVersion::Online()) {
  CWebVersion ver("pub.chinafsdu.net");
  if (ver.ReadVersion("version.txt"),"pub","pub") {
    DWORD maj = ver.dwVersionMS;
    DWORD min = ver.dwVersionLS;
  }
}

下面是CWebVersion的聲明:

////////////////////////////////////////////////////////////////
// WebVersion.h
//
#pragma once
 
class CWebVersion {
protected:
   enum { BUFSIZE = 64 };
   LPCTSTR m_lpServer;                  // server name
   DWORD   m_dwError;                   // most recent error code
   TCHAR   m_errInfo[256];              // extended error info
   TCHAR   m_version[BUFSIZ];           // version number as text
   void    SaveErrorInfo();             // helper to save error info
 
public:
   DWORD dwVersionMS;      // version number: most-sig 32 bits
   DWORD dwVersionLS;      // version number: least-sig 32 bits
 
   CWebVersion(LPCTSTR server) : m_lpServer(server) { }
   ~CWebVersion() { }
 
   static  BOOL Online();
   BOOL    ReadVersion(LPCTSTR lpFileName,LPCSTR lpszUserName,LPCSTR l						

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