#include "stdafx.h"
#include <afxsock.h>
char pdata[256*16];
char current_ver[]="1.1.1001";
bool Update(char* Version)
{
printf("(%s)", Version);
// 将指定版本下载到临时目录中
// x.xx.xxxx.tmp
char cmd[256];
char buffer[1];
sprintf(cmd, "GET http://localhost/%s.core HTTP/1.1/r/nHost: localhost/r/n/r/n", Version);
SOCKET sock;
struct sockaddr_in blah;
struct hostent *he;
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(1,1);
if (WSAStartup(wVersionRequested , &wsaData))
return false;
if ((sock=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
return false;
sock = socket(AF_INET,SOCK_STREAM,0);
blah.sin_family = AF_INET;
blah.sin_port = htons(80);
blah.sin_addr.s_addr= inet_addr("localhost");
if ((he=gethostbyname("localhost"))!=NULL)
{
memcpy((char *)&blah.sin_addr.s_addr,he->h_addr,he->h_length);
}
else
{
if((blah.sin_addr.s_addr=inet_addr("localhost"))==INADDR_NONE)
{
WSACleanup();
return false;
}
}
if (connect(sock,(struct sockaddr*)&blah,sizeof(blah))==0)
{
send(sock, cmd, strlen(cmd), 0);
FILE* fp;
fp=fopen("tmp", "wb");
while(recv(sock, buffer, 1, 0)!=0)
{
printf(".");
fwrite(buffer, 1, 1, fp);
}
fclose(fp);
closesocket(sock);
WSACleanup();
}
closesocket(sock);
WSACleanup();
// printf("%s/n", pdata);
// 下载完成之后将名称更改成正式名称
// x.xx.xxxx.core
return true;
return false;
}
char* GetCurrentVer()
{
return current_ver;
}
int GetConfigSize()
{
return strlen(pdata);
}
void init()
{
// 从远程读取配置文件 http://localhost/version.txt
char cmd[]="GET http://localhost/version.txt HTTP/1.1/r/nHost: localhost/r/n/r/n";
SOCKET sock;
struct sockaddr_in blah;
struct hostent *he;
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(1,1);
if (WSAStartup(wVersionRequested , &wsaData))
return;
if ((sock=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
return;
sock = socket(AF_INET,SOCK_STREAM,0);
blah.sin_family = AF_INET;
blah.sin_port = htons(80);
blah.sin_addr.s_addr= inet_addr("localhost");
if ((he=gethostbyname("localhost"))!=NULL)
{
memcpy((char *)&blah.sin_addr.s_addr,he->h_addr,he->h_length);
}
else
{
if((blah.sin_addr.s_addr=inet_addr("localhost"))==INADDR_NONE)
{
WSACleanup();
return;
}
}
if (connect(sock,(struct sockaddr*)&blah,sizeof(blah))==0)
{
send(sock, cmd, strlen(cmd), 0);
recv(sock, pdata, sizeof(pdata), 0);
closesocket(sock);
WSACleanup();
}
closesocket(sock);
WSACleanup();
strcpy(pdata, strstr(pdata, "# start"));
// strcat(pdata, "/0");
printf("%s/n", pdata);
}
char* GetConfigData()
{
return pdata;
}
char* GetLastestVer()
{
init();
int size=GetConfigSize();
char* ptxt;
ptxt=(char*)malloc(sizeof(char)*size);
strcpy(ptxt, GetConfigData());
char line[256];
int i=0;
int l=0;
while( i < strlen(ptxt) )
{
l=0;
while(ptxt[i] != '/n' && ptxt[i]!='/r')
{
line[l]=ptxt[i];
l++;
i++;
line[l]='/0';
}
char* offset;
if(offset=strstr(line, "kernel_version"))
{
if(offset=strstr(line, "="))
{
return &offset[1];
}
}
i++;
}
return NULL;
}
bool HaveNewerVer()
{
return false;
return true;
}