// 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");
}
转载于:https://www.cnblogs.com/cfas/articles/2032227.html