以下是一个通HTTP下载文件的程序,但总是在CONNECT时不成功,请问为什么?
char fname[MAXPATH]; void LogFile(char *p) { FILE *fp=fopen(fname,"a+"); fprintf(fp,"%s\n",p); fclose(fp); } BOOL HttpClient(void) { 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(80); addr.sin_addr.s_addr = inet_addr ("168.160.224.185"); // 计算机世界日报 iResult=connect(s,(struct sockaddr *) &addr, sizeof(addr)); if(SOCKET_ERROR == iResult) { // 连接失败 WSACleanup(); return FALSE; } else { // 连接成功 strcpy(strSubAddr, "GET /99/tips/ \r\n"); strcpy(fname, "index.htm"); iResult = send(s, strSubAddr,strlen(strSubAddr),0); // 下载文件 do { strset(strBuffer,' '); iResult = recv(s,strBuffer,sizeof(strBuffer),0); LogFile(strBuffer); } while( iResult !=0 ); } WSACleanup(); return TRUE; }
char fname[MAXPATH]; void LogFile(char *p) { FILE *fp=fopen(fname,"a+"); fprintf(fp,"%s\n",p); fclose(fp); } BOOL HttpClient(void) { 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(80); addr.sin_addr.s_addr = inet_addr ("168.160.224.185"); // 计算机世界日报 iResult=connect(s,(struct sockaddr *) &addr, sizeof(addr)); if(SOCKET_ERROR == iResult) { // 连接失败 WSACleanup(); return FALSE; } else { // 连接成功 strcpy(strSubAddr, "GET /99/tips/ \r\n"); strcpy(fname, "index.htm"); iResult = send(s, strSubAddr,strlen(strSubAddr),0); // 下载文件 do { strset(strBuffer,' '); iResult = recv(s,strBuffer,sizeof(strBuffer),0); LogFile(strBuffer); } while( iResult !=0 ); } WSACleanup(); return TRUE; }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货