资源简介
用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个文件信息
相关资源
- 计算器MFC+VC++
- vc++2010学习版Microsoft Visual C++ 2010 Exp
- VC++实现科学计算器
- vc++mfc经典数字图像处理程序
- 抓包源码,有兴趣的拿走
- vc++调用usb摄像头,进行拍照,保存为
- VC++6.0编译通过的读写CSV文件的代码及
- 基于VC++的UDP文件传输系统
- MFC停车场车辆信息管理系统附数据库
- VC++实现灰度图像的6种边缘检测算子
- VC++MFC抓包程序源码
- VC++图像处理源码库
- B样条曲线生成算法,用VC++加OpenGL写的
- 通用杀毒软件VC++源代码
- VC++实现Contourlet图像处理
- 轴承表面质量缺陷识别与统计系统
- VC++ MFC科学计算器,含代码和整个工程
- VC++实现小波变换
- VC++实现简单的用户登录系统ADO。包括
- VC++实现简单的用户登录系统,包括修
- diffie-hellman密钥交换协议vc++实现
- 军棋源代码
- 基于opencv的傅里叶描述子VC++代码
- VC++深入详解光盘代码!
- 基于单片机的温湿度采集系统/VC++上位
- 基于有线局域网语音聊天系统VC++实现
- 基于SNMP的IP流量统计(VC++实现)源代
- 中国象棋引擎ZWM 版本0.2.(VC++源码)
- VS2010 MFC VC++ 学习教程资料 1-55
- VC++学生信息管理系统ADO连接数据库
评论
共有 条评论