/* * 简单刷票系统 * * 云守护 [email protected] */ #include <stdio.h> #include <winsock2.h> #include <winbase.h> #pragma comment(lib,"ws2_32") #define RefreshTimes 10 //刷新次数 char host[128]; char path[128]; // 函数声明 DWORD WINAPI SendThread(LPVOID lpParam); void SetParam(); void main(int argc,char * argv[]) { HANDLE hThread[RefreshTimes]; DWORD dwThread[RefreshTimes]; int i; SetParam(); // 设置相关参数 // 循环创建线程完成数据发送功能 for( i = 0 ; i < RefreshTimes ; i++ ) { hThread[i] = CreateThread(NULL,0,SendThread,(LPVOID)i,0,&dwThread[i]); if( hThread == NULL ) { printf("\tCreateThread Failed.\n"); exit(0); } Sleep(100); CloseHandle(hThread); } } // 线程函数,向服务器发送数据 DWORD WINAPI SendThread(LPVOID lpParam) { WSADATA wsd; SOCKET local; SOCKADDR_IN addr; HOSTENT * Host = NULL; if( WSAStartup(MAKEWORD(2,2),&wsd) != 0) { printf("\tFailed To Load Winsock Library!\n"); exit(0); } local = socket(AF_INET,SOCK_STREAM,0); if( local == INVALID_SOCKET) { printf("\tFailed To Create Socket\n"); exit(0); } addr.sin_family = AF_INET; addr.sin_port = htons(80); addr.sin_addr.S_un.S_addr = inet_addr(host); if( addr.sin_addr.S_un.S_addr == INADDR_NONE ) { // 解析主机地址 Host = gethostbyname(host); if( Host == NULL ) { printf("\tUnable To Resolve Server:%s\n",host); return 0; } CopyMemory(&addr.sin_addr,Host->h_addr_list[0],Host->h_length); printf("\tSend To:%s\n",inet_ntoa(addr.sin_addr)); } // 尝试与服务器建立连接 if( SOCKET_ERROR == connect(local,(sockaddr*)&addr,sizeof(SOCKADDR)) ) { printf("\tFailed To Connect To The Server!\n"); exit(0); } // 构造发送数据 char SendBuf[512]; memset(SendBuf,'\0',512); strcpy(SendBuf,"GET "); char PartOne[] = " HTTP/1.1\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*\r\nAccept-Language: zh-cn\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\nHost: "; char PartTwo[] = "\r\nConnection: Keep-Alive\r\n\r\n"; strcat(SendBuf,path); strcat(SendBuf,PartOne); strcat(SendBuf,host); strcat(SendBuf,PartTwo); // 将数据发送给服务器 if( send(local,SendBuf,strlen(SendBuf)+1,0) == SOCKET_ERROR ) { printf("\tSend Data Error.\n"); } closesocket(local); WSACleanup(); return 0; } void SetParam() { char Host_Temp[128]; char Path_Temp[128]; printf("\n\tMade By 云守护\n\tQQ:542335496\n\tEmail:[email protected]\n"); printf("\tGet The Host:"); gets(Host_Temp); fflush(stdout); strcpy(host,&Host_Temp[0]); printf("\tGet The Path of WebPage:"); gets(Path_Temp); strcpy(path,&Path_Temp[0]); }