简单刷票系统 c语言实现

/*
 *	简单刷票系统
 *
 *	云守护 [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]);
}

你可能感兴趣的:(简单刷票系统 c语言实现)