资源简介
用VC++实现的软件自动更新模块 Updater.exe源码。主程序从服务器下载配置文件后对比本地配置文件,有新版本则打开Updater.exe进行自动更新,可以显示需要下载的文件列表,文件大小,文件下载状态等。CSDN我找了,没有比我这个更好的了。

代码片段和文件信息
#include “stdafx.h“
#include “HttpSocket.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define MAXHEADERSIZE 1024
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHttpSocket::CHttpSocket()
{
m_s=NULL;
m_phostent=NULL;
m_port=80;
m_bConnected=FALSE;
for(int i=0;i<256;i++)
m_ipaddr[i]=‘\0‘;
memset(m_requestheader0MAXHEADERSIZE);
memset(m_ResponseHeader0MAXHEADERSIZE);
m_nCurIndex = 0; //
m_bResponsed = FALSE;
m_nResponseHeaderSize = -1;
}
CHttpSocket::~CHttpSocket()
{
CloseSocket();
}
BOOL CHttpSocket::Socket()
{
if(m_bConnected)
return FALSE;
struct protoent *ppe;
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2 2 );
err = WSAStartup( wVersionRequested &wsaData );
ppe=getprotobyname(“tcp“);
int nErr = WSAGetLastError();
//创建SOCKET对象
m_s=socket(PF_INETSOCK_STREAMppe->p_proto);
if(m_s==INVALID_SOCKET)
{
MessageBox(NULL“socket()函数执行失败!““错误“MB_OK);
return FALSE;
}
return TRUE;
}
BOOL CHttpSocket::Connect(char *szHostNameint nPort)
{
if(szHostName==NULL)
return FALSE;
///若已经连接则先关闭
if(m_bConnected)
{
CloseSocket();
}
///保存端口号
m_port=nPort;
///根据主机名获得IP地址
m_phostent=gethostbyname(szHostName);
if(m_phostent==NULL)
{
MessageBox(NULL“gethostbyname()函数执行失败!““错误“MB_OK);
return FALSE;
}
///连接
struct in_addr ip_addr;
memcpy(&ip_addrm_phostent->h_addr_list[0]4); ///h_addr_list[0]里4个字节每个字节8位
struct sockaddr_in destaddr;
memset((void *)&destaddr0sizeof(destaddr));
destaddr.sin_family=AF_INET;
destaddr.sin_port=htons(80);
destaddr.sin_addr=ip_addr;
///保存主机的IP地址字符串
sprintf(m_ipaddr“%d.%d.%d.%d“
destaddr.sin_addr.S_un.S_un_b.s_b1
destaddr.sin_addr.S_un.S_un_b.s_b2
destaddr.sin_addr.S_un.S_un_b.s_b3
destaddr.sin_addr.S_un.S_un_b.s_b4);
/*inet_addr();把带点的IP地址字符串转化为in_addr格式;
inet_ntoa();作用相反*/
/*注意理解sturct in_addr 的结构:一个32位的数;一共同体的形式使用
(1)每8位一个即s_b1~s_b4;
(2)每16位一个即s_w1~s_w2;
(3)32位s_addr
struct in_addr {
union {
struct{
unsigned char s_b1
s_b2
s_b3
s_b4;
} S_un_b;
struct{
unsigned short s_w1
s_w2
}S_un_w;
unsigned long S_addr;
} S_un;
};
*/
if(connect(m_s(struct sockaddr*)&destaddrsizeof(destaddr))!=0)
{
//CloseSocket();
//m_s=NULL;
MessageBox(NULL“connect()函数执行失败!““错误“MB_OK);
return FALSE;
}
///设置已经连接的标志
m_bConnected=TRUE;
return TRUE;
}
///根据请求的相对URL输出HTTP请求头
const char *CHttpSocket::FormatRequestHeader(char *pServerchar *pobject long &Length
char *pCookiechar *pRefererlong nFrom
long nToint
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5676 2015-03-15 20:55 Updater\Updater\Updater.vcproj
文件 2763 2015-03-14 20:44 Updater\Updater\ReadMe.txt
文件 8272 2015-03-15 23:24 Updater\Updater\UpdaterDlg.cpp
文件 443 2015-03-15 23:24 Updater\Updater\Update.ini
文件 447 2015-03-14 20:44 Updater\Updater\Updater.h
文件 1355 2013-12-19 20:15 Updater\Updater\HttpSocket.h
文件 8225 2015-03-14 16:43 Updater\Updater\HttpSocket.cpp
文件 1095 2015-03-15 22:08 Updater\Updater\UpdaterDlg.h
文件 1660 2015-03-14 20:44 Updater\Updater\Updater.cpp
文件 81424 2015-03-15 23:12 Updater\Updater\Updater.aps
文件 4782 2015-03-15 23:12 Updater\Updater\Updater.rc
文件 1796 2015-03-14 20:44 Updater\Updater\stdafx.h
文件 1030 2015-03-14 20:44 Updater\Updater\targetver.h
文件 138 2015-03-14 20:44 Updater\Updater\stdafx.cpp
文件 363 2015-03-14 20:44 Updater\Updater\res\Updater.rc2
文件 32438 2015-03-14 21:10 Updater\Updater\res\BACK.bmp
文件 12902 2015-03-14 21:23 Updater\Updater\res\Updater.ico
文件 9662 2015-03-14 21:20 Updater\Updater\res\www.ico.la_6d549c05aa6732c4ec7450ff2e41ad8c_48X48.ico
文件 350 2015-03-14 21:20 Updater\Updater\res\www.ico.la_40f252faabf48c65f1cab9986eef47e4_8X8.ico
文件 1150 2015-03-14 21:20 Updater\Updater\res\www.ico.la_b81dbf28942b701f5eaa6f90660e7102_16X16.ico
文件 6710 2015-03-14 21:19 Updater\Updater\res\3.png
文件 4286 2015-03-14 21:20 Updater\Updater\res\www.ico.la_2f68143984a85edd83030e97d17d027c_32X32.ico
文件 51771 2015-03-14 21:04 Updater\Updater\res\20140129205802859.png
文件 1427 2015-03-15 23:28 Updater\Updater\Updater.vcproj.QH-20141228FCRX.Administrator.user
文件 724 2015-03-14 21:43 Updater\Updater\Resource.h
文件 1337 2015-03-14 22:57 Updater\Updater.sln
..A..H. 34816 2015-03-15 23:28 Updater\Updater.suo
文件 391 2015-03-15 23:29 Updater\Debug\Update.ini
文件 1937408 2015-03-15 15:32 Updater\Debug\Test.exe
文件 1998336 2015-03-15 23:24 Updater\Debug\Updater.exe
............此处省略32个文件信息
相关资源
- VC++ 多线程文件读写操作
- 移木块游戏,可以自编自玩,vc6.0编写
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC++实现CMD命令执行与获得返回信息
- VC++基于OpenGL模拟的一个3维空间模型
- 基于VC++的SolidWorks二次开发SolidWorks
- 派克变换VC++源码(附文档)
- VC++ 串口
- VC++ 大富翁4_大富翁游戏源码
- VC++ 摄像头视频采集与回放源程序
- 转 VC++ 实现电子邮件(Email)发送
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
- 基于改进的fcm算法的图像分割vc++
- VC++6.0 绿色版,免安装,非常好用。
- Microsoft Visual C++ 2005 Redistributable Pack
- VC++MFC课程设计的学生成绩管理系统
- 大智慧365DLL插件设计
- VC++6.0汉化包
- VC++完整商业界面源码(再上传)
- VC++编程技术600个大型项目源码.rar
- VC++实现RSA加密算法
- VC++ 中国象棋经典游戏源代码
- 郁金香VC++游戏辅助视频教程
- C语言进阶源码---基于graphics实现图书
- 摄影测量相对定向VC++程序
- VC++数字图像处理典型算法及实现
- VC++酒店客房管理系统 MFC
- 车站计算机联锁vc++6.0程序代码
评论
共有 条评论