设为首页 加入收藏

TOP

基于 Web 的程序版本检查
2014-11-23 20:00:33 来源: 作者: 【 】 浏览:9
Tags:基于 Web 程序 版本 检查

现在的很多程序都可以通过 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						
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一个TCP和UPD聊天、传收文件程序 下一篇如何下载并保存网页

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: