http://img62.imageshack.us/img62/341/123jeo.jpgCode:#include <iostream> #include <stdio.h> #include <winsock.h> #include <string.h> #define URL "localhost/jacker.html" #pragma comment(lib, "ws2_32.lib") using namespace std; void geturl(char *url) { WSADATA WSAData={0}; SOCKET sockfd; struct sockaddr_in addr; struct hostent *pURL; char myurl[BUFSIZ]; char *pHost = 0, *pGET = 0; char host[BUFSIZ], GET[BUFSIZ]; char header[BUFSIZ] = ""; static char text[BUFSIZ]; int i; /* * windows下使用socket必须用WSAStartup初始化,否则不能调用 */ if(WSAStartup(MAKEWORD(2,2), &WSAData)) { printf("WSA failed\n"); return; } /* * 分离url中的主机地址和相对路径 */ strcpy(myurl, url); for (pHost = myurl; *pHost != '/' && *pHost != '\0'; ++pHost); if ( (int)(pHost - myurl) == strlen(myurl) ) strcpy(GET, "/"); else strcpy(GET, pHost); *pHost = '\0'; strcpy(host, myurl); //测试url是否一致 //printf("%s\n%s\n", host, GET); /* * 设定socket参数,未真正初始化 */ sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); pURL = gethostbyname(host); addr.sin_family = AF_INET; addr.sin_addr.s_addr = *((unsigned long*)pURL->h_addr); addr.sin_port = htons(80); /* * 组织发送到web服务器的信息 * 发送下面的信息HTTP协议的约定 */ strcat(header, "GET "); strcat(header, GET); strcat(header, " HTTP/1.1\r\n"); strcat(header, "HOST: "); strcat(header, host); strcat(header, "\r\nConnection: Close\r\n\r\n"); /* * 连接到服务器,发送请求header,并接受反馈(网页源代码) */ connect(sockfd,(SOCKADDR *)&addr,sizeof(addr)); send(sockfd, header, strlen(header), 0); while ( recv(sockfd, text, BUFSIZ, 0) > 0) { printf("%s\n", text); //printf("anser\n",text); strnset(text, '\0', BUFSIZ); } closesocket(sockfd); WSACleanup(); } int main() { char url[256]; // printf("http://"); //scanf("%s", url); //geturl(url); geturl(URL); return 0; /*FILE* pFile = NULL; pFile = fopen(,"r"); _ASSERT(pFile != NULL); char str[] = "X"; fread(str,1,sizeof(str),pFile); if(strcmp(str,"Y")==0) { cout<<"Y"; } else { cout<<"N"; }*/ }