?? network.c
字號(hào):
#include "NetWork.h"
#include <winsock.h>
#pragma comment(lib,"Ws2_32.lib")
#include <string.h>
#include <stdio.h>
int TempXMLFileCreate(char *p)
{
FILE *fp=fopen("XMlFile.tmp","a+");
if(!fp) return 0;
fprintf(fp,"%s",p);
fclose(fp);
return 1;
}
void ClearFile(char* fileName)
{
FILE *fp=fopen(fileName,"w");
fclose(fp);
}
int HttpFileGet(char* IPAdr, unsigned short port, char* file)
{
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
int iResult;
long lResult;
char strSubAddr[100], strBuffer[100];
lResult = WSAStartup(0x0101,&ws);
s = socket(AF_INET,SOCK_STREAM,0);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(IPAdr); //
iResult=connect(s,(struct sockaddr *)&addr, sizeof(addr));
if(SOCKET_ERROR == iResult){
// 連接失敗
WSACleanup();
return FALSE;
}else {
// 連接成功
strcpy(strSubAddr,file);
iResult = send(s, strSubAddr,strlen(strSubAddr),0);
ClearFile("XMlFile.tmp");
// 下載文件
do {
strset(strBuffer, '\0');
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
if(!TempXMLFileCreate(strBuffer)) return 0;
} while( iResult !=0 );
}
WSACleanup();
return TRUE;
}
int HttpAnalysisUrl(const char* url, char* ipAdr, unsigned short* port, char* fileName)
{
char tmp[MAX_PATH];
int i = 0;
int j = 0;
*port = 80;
for(;url[i] < '0'||url[i]>'9'; i++)
if(i>MAX_PATH-1) return 0;
for(; url[i] != '/'&&url[i] != ':'; i++){
ipAdr[j] = url[i];
j++;
if(i>MAX_PATH-1) return 0;
}
ipAdr[j] = '\0';
j = 0;
if(url[i] == ':'){
i++;
for(;url[i] != '/';i++){
tmp[j] = url[i];
j++;
}
tmp[j] = '\0';
for(j = 0;tmp[j] != '\0'; j++)
*port = 10*(*port) + tmp[j] - '0';
}
j = 0;
for(;url[i] != '\0';i++, j++){
fileName[j] = url[i];
if(i>MAX_PATH-1) return 0;
}
fileName[j] = '\0';
strcpy(tmp, "GET ");
strcat(tmp, fileName);
strcpy(fileName, tmp);
strcat(fileName, " \r\n");
return 1;
}
int HttpConnEstablish(char* IPAdr, unsigned short port, char* file, SOCKET* s)
{
WSADATA ws;
struct sockaddr_in addr;
char strSubAddr[100];
int lResult, iResult;
lResult = WSAStartup(0x0101,&ws);
*s = socket(AF_INET,SOCK_STREAM,0);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(IPAdr); //
iResult=connect(*s,(struct sockaddr *)&addr, sizeof(addr));
if(SOCKET_ERROR == iResult){
WSACleanup();
return 0;
}else{
strcpy(strSubAddr,file);
send(*s, strSubAddr,strlen(strSubAddr),0);
}
return 1;
}
int HttpConnEstablishByUrl(char* url, SOCKET* s)
{
char IPAdr[MAX_PATH];
unsigned short port = 80;
char file[MAX_PATH];
if(!HttpAnalysisUrl(url, IPAdr, &port, file)) return 0;
return HttpConnEstablish(IPAdr, port, file, s);
}
void HttpConnCleanUp(){
WSACleanup();
}
int HttpStreamGet(unsigned int s, char* strBuffer, int len)
{
// strset(strBuffer, '\0');
return recv(s,strBuffer,len,0);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -