C++写的获取网页
// c5.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdlib.h> #include <winsock2.h> #include <memory.h> #include <assert.h> #include "c5.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #pragma comment(lib, "ws2_32.lib") CWinApp theApp; using namespace std; #define DBG 1 #define SERVPORT 80 #define MAXDATASIZE 40000 /*每次最大数据传输量 */ char buf[MAXDATASIZE]; char header[300] = ""; int sockfd,wsastat,server_ip,error; DWORD WINAPI get_server_msg(LPVOID lp_param); class sock{ public : void cre_sock(void); }; DWORD WINAPI get_server_msg(LPVOID lp_param){ while( (recv( sockfd, buf, MAXDATASIZE, 0 )) >0){ FILE *fp; CString str,str2; str = buf; str = str.Mid(5000,600); const char *lpctStr=(LPCTSTR)str; if ( (fp = fopen( "page.txt", "w+" )) !=NULL ){ if ( (fputs(lpctStr,fp)) != EOF ){ printf("%s %d\n","write~^_^",str.GetLength()); }else{ printf("write~ - -"); } }else{ printf("%s \n","........"); } fclose(fp); } return 0; }; void sock::cre_sock(void){ /* host name */ char *domain = "czzp114.com"; static WSADATA wsa_data; struct hostent *host; struct sockaddr_in serv_addr; strcat(header, "GET "); strcat(header, "/"); //strcat(header, "cate=72288cb9cc334746920897b9095fd7ad&basictype=0"); //strcat(header, "&ga=e2c6bab2de7647a3990a8f6d87b7f71d"); //strcat(header, "&gs=d8d1b31d0cfd43ed90c1194b1e10f0ba"); strcat(header, " HTTP/1.1\r\n"); strcat(header, "HOST: "); strcat(header, domain); //*header = "http://czzp114.com"; /* strcat(header, "\r\nConnection: Close\r\n\r\n"); //连接一次则关闭SOCk */ strcat( header, "\r\nConnection: keep-alive\r\n\r\n" );//长连接 wsastat = WSAStartup(MAKEWORD(2,2), &wsa_data); if( wsastat != 0x00000000 ){// 初始化失败 printf("create a socket it's fill"); system("pause"); } memset( &serv_addr,0,sizeof(struct sockaddr) ); if ( DBG==0 ){ char hostname[128]; gethostname( hostname, 127 ); host = gethostbyname(hostname); }else{ host = gethostbyname(domain); } memcpy( &server_ip, host->h_addr_list[0], sizeof(host->h_addr_list[0]) ); if( host==NULL ){ error = WSAGetLastError(); printf("%d",error); system("pause"); } if ( ( sockfd = socket( AF_INET, SOCK_STREAM, 0 ) ) == -1 ){ printf("socket create error!"); system("pause"); } serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(SERVPORT); serv_addr.sin_addr.s_addr = server_ip; if ( connect( sockfd, (struct sockaddr *) &serv_addr,sizeof(struct sockaddr) ) <0 ) { printf( "conntion server invalid!error code:%d\n", WSAGetLastError() ); system("pause"); }else{ printf("conntion server ok!code:%d\n",WSAGetLastError()); printf("wait message for server!.....\n"); } HANDLE h_tad; DWORD dw_tadid; h_tad = CreateThread( NULL ,NULL,get_server_msg, NULL, 0, &dw_tadid ); while(1){ send( sockfd, header, strlen(header), 0 ); printf("HOST:%s \n",domain); Sleep(10*1000); system("cls"); } } void proc_main(void); int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; SetConsoleTitle(TEXT("小虾子")); if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { proc_main(); } return nRetCode; } void proc_main(void){ sock pc_sock; pc_sock.cre_sock(); system("pause"); }
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。