• 大小: 1.21MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-03
  • 语言: C/C++
  • 标签: VC++  自动更新  

资源简介

用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个文件信息

评论

共有 条评论