
之前在vs2010上实现了 结果老大让我弄到linux上 结果同样的代码不知到为啥用不了
这是我写的 球大婶帮忙看看为啥
void GetUrl(char* url){
char cSrvName[256] = "www.baidu.com";
// strcpy(cSrvName, url);
char* pHost = strstr(cSrvName, "/");
char dizhi[256];
memset(dizhi, 0, 256);
strcpy(dizhi, "/");
if(NULL != pHost){
strcpy(dizhi, pHost);
*pHost = '\0';
}
char host[256];
memset(dizhi, 0, 256);
strcpy(host, cSrvName);
int cfd = socket(AF_INET, SOCK_STREAM, 0);
if(-1 == cfd){
printf("socket fail! \r\n");
return;
}
struct sockaddr_in s_add;
bzero(&s_add, sizeof(struct sockaddr_in));
s_add.sin_family = AF_INET;
hostent* lphost = gethostbyname(host);
if(NULL == lphost){
return;
}
s_add.sin_addr.s_addr = *((in_addr_t*)lphost->h_addr);
s_add.sin_port = htons(80);
int con = connect(cfd, (struct sockaddr*)&s_add, sizeof(s_add));
if(-1 == con){
return;
}
char header[256];
memset(header, 0, 256);
strcat(header, "GET ");
strcat(header, dizhi);
strcat(header, " HTTP/1.1\r\n");
strcat(header, "HOST: ");
strcat(header, host);
strcat(header, "\r\nConnection: Close\r\n\r\n");
int sen = write(cfd, header, strlen(header));
if(sen < 0){
return;
}
ofstream fout;
fout.open("/root/文档/a.txt");
static char text[256];
bool isFind = false;
char* pA = "\r\n\r\n";
while(read(cfd, text, 256) > 0){
char* pB = strstr(text, pA);
if((NULL != pB) && (false == isFind)){
isFind = true;
fout<<pB;
}
if(isFind){
fout<<text;
memset(text, 0, 256);
}
}
close(cfd);
}