久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
程序練習(xí)作品 -> Auto_Update V1.0
[打印本頁]
作者:
liuyuxi
時(shí)間:
2015-1-11 00:09
標(biāo)題:
程序練習(xí)作品 -> Auto_Update V1.0
為了給用戶更好的服務(wù),現(xiàn)在很多軟件都提供檢查在線升級(jí)的功能。
要實(shí)現(xiàn)這個(gè)功能,普遍的方法是利用 ftp空間,ftp空間里面存放了信息配置文件以及升級(jí)文件。程序一般會(huì)從空間上先下載一個(gè)存儲(chǔ)升級(jí)信息的配置文件。通過讀取這個(gè)配置文件,判斷是否要進(jìn)行程序升級(jí)、更新。如果要更新,則會(huì)通過配置文件中指定的下載地址去下載升級(jí)文件。
例如:ftp 上存放的配置文件如下【Upate.ini】:
[Version]
Version=12
[URL]
URL=http://m.zg4o1577.cn/123.exe
那么程序會(huì)先下載 Upate.ini 文件,然后將自己的版本號(hào)與配置文件中的 Version 對(duì)比,如果是這個(gè)版本號(hào),說明沒有更新。如果比它小,則說明需要更新,讀取URP 下載地址,進(jìn)行下載升級(jí)文件。
如果我們有更新了程序,版本為 13, 則可以修改配置文件,再上傳到 ftp 空間上。程序就能自動(dòng)檢測(cè)到文件更新了。
上面介紹的這種方式,比較通用適合免費(fèi)的FTP空間。
還有一種方式,使用匿名FTP在程序里獲取版本信息文件。不必下載配置文件。不過不適合免費(fèi)的FTP空間。但是免費(fèi)的FTP空間不太安全。我就遇到過空間被不定時(shí)無故關(guān)閉,官方稱提供免費(fèi)的服務(wù)器訪問量太大暫時(shí)關(guān)閉部分空間緩解壓力。建議我升級(jí)付費(fèi)空間就不存在此問題。還有一個(gè)問題就是自己的靜態(tài)網(wǎng)站上被掛馬了!我靠!靜態(tài)網(wǎng)站總不可能被注入什么的吧?
如果自己搭建FTP空間也行,但是考慮到 ADSL 的上下行不對(duì)稱。我不建議這樣做。
前面說了一大堆都是說更新的方法,免費(fèi)FTP空間不安全,如果為了一些練習(xí)作品去購買付費(fèi)空間貌似又不太值。那怎么辦呢?我之前就一直糾結(jié)這個(gè)問題。
如今突然有靈感了,在不需要購買付費(fèi)的FTP空間或不使用不安全的免費(fèi)FTP空間的前提下設(shè)計(jì)了這個(gè) Auto_Update V1.0 程序。
這個(gè)程序的功能很簡(jiǎn)單,就是接受用戶的更新信息,回饋升級(jí)文件的下載地址。。
我們先添加程序的升級(jí)列表再把升級(jí)文件上傳到網(wǎng)盤里,就會(huì)回饋升級(jí)文件的網(wǎng)盤下載地址(支持外鏈的更好,知道的話順便告訴我一聲哈)。
設(shè)置服務(wù)端的方法:
先去3322 或 花生殼 申請(qǐng)一個(gè)免費(fèi)的動(dòng)態(tài)域名,有路由的朋友先在路由上設(shè)置端口映射和自動(dòng)更新動(dòng)態(tài)域名(路由都具備這些功能)。如果沒有路由的朋友直接下載3322 或花生殼的客戶端程序,登錄后 它會(huì)自動(dòng)指向你的外網(wǎng)ip。 這個(gè)目的是為了,讓你的程序通過這個(gè)域名獲取到你的IP。因?yàn)锳DSL 的IP是會(huì)變的。
然后運(yùn)行Auto_Update V1.0程序,在Auto_Update V1.0 填入你的域名和端口。然后點(diǎn)擊【添加/刪除】按鈕,添加你的升級(jí)列表。升級(jí)列表里寫入你的低版本程序名 相對(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ù)接口。用來連接 Auto_Update V1.0 獲得升級(jí)信息。具體使用方法可以看看頭文件里面的注釋。
TestUpdate.cpp:是一個(gè)調(diào)用例程。
TestUpdate.cpp:
=================================================================
// 升級(jí)必須要的頭文件和鏈接庫
#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ù)來獲取服務(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)圖:
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
a级性视频
|
国产91精品久久久久久久网曝门
|
中文字幕国产视频
|
久久久www成人免费无遮挡大片
|
天天干视频网
|
亚洲国产成人精品久久久国产成人一区
|
精品一区二区三区中文字幕
|
国产激情在线
|
日日夜夜视频
|
日韩三级
|
欧美一级特黄aaa大片在线观看
|
情侣酒店偷拍一区二区在线播放
|
久久久综合精品
|
亚洲第一免费播放区
|
成人深夜福利
|
亚洲精品国产成人
|
污片在线免费观看
|
国产99久久
|
亚洲区一区二
|
欧美一区二区三区四区五区无卡码
|
91佛爷在线观看
|
欧美在线天堂
|
亚洲一区二区三区在线免费观看
|
一级黄色影片在线观看
|
亚洲视频免费一区
|
91精品国产日韩91久久久久久
|
影音先锋中文字幕在线观看
|
午夜影院操
|
精品一区二区在线观看
|
中文字幕在线第一页
|
亚洲最大看片网站
|
国产一区久久
|
亚洲精品99久久久久久
|
国产乱码精品一品二品
|
亚洲狠狠
|
一级黄色片美国
|
国产成人区
|
99热在这里只有精品
|
精品国产视频
|
久久99国产精品
|
国产一区二区激情视频
|