久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2318|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

程序練習(xí)作品 -> Auto_Update V1.0

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71922 發(fā)表于 2015-1-11 00:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  為了給用戶更好的服務(wù),現(xiàn)在很多軟件都提供檢查在線升級(jí)的功能。
  要實(shí)現(xiàn)這個(gè)功能,普遍的方法是利用 ftp空間,ftp空間里面存放了信息配置文件以及升級(jí)文件。程序一般會(huì)從空間上先下載一個(gè)存儲(chǔ)升級(jí)信息的配置文件。通過(guò)讀取這個(gè)配置文件,判斷是否要進(jìn)行程序升級(jí)、更新。如果要更新,則會(huì)通過(guò)配置文件中指定的下載地址去下載升級(jí)文件。

例如:ftp 上存放的配置文件如下【Upate.ini】:

[Version]
Version=12
[URL]
URL=http://www.zg4o1577.cn/123.exe

那么程序會(huì)先下載 Upate.ini 文件,然后將自己的版本號(hào)與配置文件中的 Version 對(duì)比,如果是這個(gè)版本號(hào),說(shuō)明沒(méi)有更新。如果比它小,則說(shuō)明需要更新,讀取URP 下載地址,進(jìn)行下載升級(jí)文件。
如果我們有更新了程序,版本為 13, 則可以修改配置文件,再上傳到 ftp 空間上。程序就能自動(dòng)檢測(cè)到文件更新了。

上面介紹的這種方式,比較通用適合免費(fèi)的FTP空間。
還有一種方式,使用匿名FTP在程序里獲取版本信息文件。不必下載配置文件。不過(guò)不適合免費(fèi)的FTP空間。但是免費(fèi)的FTP空間不太安全。我就遇到過(guò)空間被不定時(shí)無(wú)故關(guān)閉,官方稱提供免費(fèi)的服務(wù)器訪問(wèn)量太大暫時(shí)關(guān)閉部分空間緩解壓力。建議我升級(jí)付費(fèi)空間就不存在此問(wèn)題。還有一個(gè)問(wèn)題就是自己的靜態(tài)網(wǎng)站上被掛馬了!我靠!靜態(tài)網(wǎng)站總不可能被注入什么的吧?

如果自己搭建FTP空間也行,但是考慮到 ADSL 的上下行不對(duì)稱。我不建議這樣做。

前面說(shuō)了一大堆都是說(shuō)更新的方法,免費(fèi)FTP空間不安全,如果為了一些練習(xí)作品去購(gòu)買(mǎi)付費(fèi)空間貌似又不太值。那怎么辦呢?我之前就一直糾結(jié)這個(gè)問(wèn)題。
如今突然有靈感了,在不需要購(gòu)買(mǎi)付費(fèi)的FTP空間或不使用不安全的免費(fèi)FTP空間的前提下設(shè)計(jì)了這個(gè) Auto_Update V1.0 程序。




這個(gè)程序的功能很簡(jiǎn)單,就是接受用戶的更新信息,回饋升級(jí)文件的下載地址。。
我們先添加程序的升級(jí)列表再把升級(jí)文件上傳到網(wǎng)盤(pán)里,就會(huì)回饋升級(jí)文件的網(wǎng)盤(pán)下載地址(支持外鏈的更好,知道的話順便告訴我一聲哈)。

設(shè)置服務(wù)端的方法:
先去3322 或 花生殼 申請(qǐng)一個(gè)免費(fèi)的動(dòng)態(tài)域名,有路由的朋友先在路由上設(shè)置端口映射和自動(dòng)更新動(dòng)態(tài)域名(路由都具備這些功能)。如果沒(méi)有路由的朋友直接下載3322 或花生殼的客戶端程序,登錄后 它會(huì)自動(dòng)指向你的外網(wǎng)ip。  這個(gè)目的是為了,讓你的程序通過(guò)這個(gè)域名獲取到你的IP。因?yàn)锳DSL 的IP是會(huì)變的。
然后運(yùn)行Auto_Update V1.0程序,在Auto_Update V1.0 填入你的域名和端口。然后點(diǎn)擊【添加/刪除】按鈕,添加你的升級(jí)列表。升級(jí)列表里寫(xiě)入你的低版本程序名 相對(duì)應(yīng)的新版本的程序名以及下載地址。這樣才能讓Auto_Update 才能知道是哪個(gè)程序要升級(jí)哪個(gè)版本以及下載地址是什么。這樣就可以準(zhǔn)確回饋給相應(yīng)的用戶,不會(huì)在多個(gè)程序間出現(xiàn)混亂。這個(gè)程序支持 260 個(gè)不同的程序升級(jí)記錄。




你的程序升級(jí)模塊添加代碼方法:
先點(diǎn)擊Auto_Update V1.0 上的【生成文件】按鈕,Auto_Update V1.0 會(huì)在自身目錄下生成一個(gè) AutoUpdateClient.h 頭文件和 TestUpdate.cpp 例程文件

AutoUpdateClient.h:提供了一個(gè) 核心的AutoUpade()函數(shù)接口。用來(lái)連接  Auto_Update V1.0 獲得升級(jí)信息。具體使用方法可以看看頭文件里面的注釋。
TestUpdate.cpp:是一個(gè)調(diào)用例程。

TestUpdate.cpp:

=================================================================

// 升級(jí)必須要的頭文件和鏈接庫(kù)
#include <WINSOCK2.H>
#pragma comment(lib,"ws2_32.lib")


#include <windows.h>
#include <stdio.h>


// 升級(jí)函數(shù)
#include "AutoUpdateClient.h"




/************************************************************************
* 參數(shù):模式 0:實(shí)時(shí)檢查 1:檢查一次
/************************************************************************/
void Updatee(int MS)
{       
        // 服務(wù)器域名地址
        char HostNmane[]                        = "lovemengx.vicp.net";


        // 發(fā)送自身版本信息及接受新版本的信息
        char Rname[MAX_PATH]                = "TestUpdate V1.0";


        // 接受下載地址
        char Download[MAX_PATH]                = {0};


        // 臨時(shí)緩沖區(qū)
        char Temp[MAX_PATH]                        = {0};


        // 服務(wù)器端口
        int Port = 1230        ;


        while(1)
        {       
                //        返回 0 則表示 檢測(cè)到新版本
                if (!AutoUpade(HostNmane, Port ,Rname,Download))
                {
                        sprintf(Temp, "程序檢測(cè)到最新版本:%s\t\n\n下載地址是:%s\t", Rname, Download);
                        if (IDYES == ::MessageBox(0,Temp , "檢測(cè)到新版本程序~~", MB_YESNO | MB_ICONQUESTION | MB_SYSTEMMODAL))
                        {
                                ShellExecute(NULL, "open", Download, NULL, NULL, SW_SHOWNORMAL);
                        }
                        else
                        {
                                exit(0);
                        }
                }
                // 如果模式是 非實(shí)時(shí)檢查則跳出循環(huán)結(jié)束檢查
                if(MS)
                        break;
        }
}


/************************************************************************/
/* 一個(gè)實(shí)時(shí)檢查升級(jí)的例子                                               */
/************************************************************************/
void SSJC()
{               
        puts("**************************************************************");
        puts("這是個(gè)實(shí)時(shí)檢查自動(dòng)升級(jí)的例子...");
        puts("你可以根據(jù)自己所需修改...");
        puts("**************************************************************");
        puts("已經(jīng)啟動(dòng)實(shí)時(shí)檢查升級(jí)...");
        CreateThread(0,0,(LPTHREAD_START_ROUTINE)Updatee,0,0,0);
}


/************************************************************************/
/* 一個(gè)啟動(dòng)立即檢查升級(jí)的例子                                         */
/************************************************************************/
void YUpate()
{
        puts("**************************************************************");
        puts("這是個(gè)啟動(dòng)時(shí)檢查升級(jí)的例子...");
        puts("**************************************************************");
        puts("已經(jīng)啟動(dòng)檢查升級(jí)...");
        Updatee(1);
}


void main()
{
        int i=0;
        puts("***************************************************************");
        puts(" 1:?jiǎn)?dòng)時(shí)檢查一次升級(jí)例子");
        puts(" 2:實(shí)時(shí)檢查升級(jí)例子");
        puts("");
        puts("【兩個(gè)例子都調(diào)用了 AutoUpade() 這個(gè)函數(shù)來(lái)獲取服務(wù)器的升級(jí)信息】");
        puts("***************************************************************");
        puts("請(qǐng)選擇:");
        scanf("%d", &i);


        if (i == 1)
        {
                puts("你選擇了【啟動(dòng)時(shí)檢查一次升級(jí)例子】");
                YUpate();
        }
        else
        {
                puts("你選擇了【實(shí)時(shí)檢查升級(jí)例子】");
                SSJC();
                Sleep(1000000);       
        }
}


========================================================================
實(shí)驗(yàn)圖:








分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久图片 | 成人精品在线视频 | 成人在线看片 | 国产精品中文字幕在线播放 | 国产亚洲成av人片在线观看桃 | 三区在线观看 | 欧美精品一区二区三区在线 | 在线成人福利 | 亚洲精品电影网在线观看 | 成人a网 | 九色综合网 | 国产欧美日韩在线播放 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 国产精产国品一二三产区视频 | 亚洲天堂中文字幕 | 国产二区精品视频 | 国产视频1区2区 | 国产高清一区二区三区 | 亚洲九九| 久久99精品久久久久久 | 免费在线成人网 | 日韩欧美综合 | 黄色毛片在线播放 | 久久久精品久久 | 亚洲最大福利网 | 久久久高清| 国产免费一区二区三区 | 99九色| 亚洲国产一区二区三区, | 九九热在线免费视频 | 久久国产视频播放 | 欧美1页| 欧美一区二区在线观看 | 国产精品视频一区二区三区四区国 | 成人不卡视频 | 亚洲视频三区 | 在线观看亚洲精品 | 91精品亚洲 | 美国黄色一级片 | 免费观看一级特黄欧美大片 | 99热精品6 |