读取网页内容
#define???_WINSOCK_DEPRECATED_NO_WARNINGS//在stdafx.h中添加
#pragma?comment(lib,?"ws2_32.lib")
void?ReadPage(PVOID??url)
{char?*?host?=?(char*)url;WSADATA?data;//winsock版本2.2int?err?=?WSAStartup(MAKEWORD(2,?2),?&data);if?(err)return;//用域名獲取對方主機名struct?hostent?*h?=?gethostbyname(host);if?(h?==?NULL)return;//IPV4if?(h->h_addrtype?!=?AF_INET)return;struct?in_addr?ina;//解析IPmemmove(&ina,?h->h_addr,?4);LPSTR?ipstr?=?inet_ntoa(ina);//Socket封裝struct?sockaddr_in?si;si.sin_family?=?AF_INET;si.sin_port?=?htons(80);si.sin_addr.S_un.S_addr?=?inet_addr(ipstr);int?sock?=?socket(AF_INET,?SOCK_STREAM,?IPPROTO_TCP);connect(sock,?(SOCKADDR*)&si,?sizeof(si));if?(sock?==?-1?||?sock?==?-2)return;//發(fā)送請求char?request[1024]?=?"GET?/?st=1?HTTP/1.1\r\nHost:";strcat(request,?host);strcat(request,?"\r\nConnection:Close\r\n\r\n");int?ret?=?send(sock,?request,?strlen(request),?0);//獲取網(wǎng)頁內(nèi)容FILE?*f?=?fopen("recieved.txt",?"w");int?isstart?=?0;while?(ret?>?0){const?int?bufsize?=?1024;char*?buf?=?(char*)calloc(bufsize,?1);ret?=?recv(sock,?buf,?bufsize?-?1,?0);fprintf(f,?"%s",?buf);free(buf);}fclose(f);closesocket(sock);WSACleanup();AfxMessageBox(_T("讀取網(wǎng)頁內(nèi)容成功,已保存在recieved.txt中"));return;
}
void?CMFCApplication1Dlg::OnBnClickedButton2()
{//ReadPage("chinayu2019.cn3v.net");_beginthread(ReadPage,?0,?"chinayu2019.cn3v.net");
}
轉(zhuǎn)載于:https://blog.51cto.com/9233403/2162097
總結(jié)
- 上一篇: c++ - 在终端中,cout不显示任何
- 下一篇: NUXT内存泄漏引发问题