3333333333
来源:互联网 发布:淘宝公益宝贝标志 编辑:程序博客网 时间:2024/05/16 18:41
//每个线程的处理 void * http_get(void *param) { struct HttpGetParam *phttpGetParam = (struct HttpGetParam *)param; int Count = 0; CURL *curl;//定义CURL类型的指针 CURLcode res; //定义CURLcode类型的变量 curl = curl_easy_init();//初始化一个CURL类型的指针 curl_easy_setopt(curl, CURLOPT_VERBOSE, configvalues.HttpDebug);//这里打开libcurl打印所有调试信息 curl_easy_setopt(curl, CURLOPT_HEADERDATA, phttpGetParam); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); //CURLOPT_NOBODY只下报文头,不包括数据.但是这里默认是head命令,注释掉,则是GET命令 curl_easy_setopt(curl, CURLOPT_NOBODY, 1); curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, head_data); //让用户指定url. Defaultport中存放的命令行传进来的网址 curl_easy_setopt(curl, CURLOPT_URL, phttpGetParam->url); //传输时间 (ms) curl_easy_setopt(curl, CURLOPT_TIMEOUT, configvalues.Interval); //设置端口 //curl_easy_setopt(curl, CURLOPT_PORT, 80); curl_easy_setopt(curl, CURLOPT_PORT, configvalues.Defaultport); //这里可以用循环实现每个线程内部多次处理while(1){for(Count; Count < configvalues.SendCount; ++Count) { QueryPerformanceCounter(&m_nCurrentUsTime); // 获取当前时钟计数 phttpGetParam->httpStatistics.requestTime = (double)m_nCurrentUsTime.QuadPart;phttpGetParam->httpStatistics.responseTime = 0; //调用curl_easy_perform 执行我们的设置.并进行相关的操作. 在这里只在屏幕上显示出来. res = curl_easy_perform(curl);pthread_mutex_lock(&mutex); //上锁 StatCount += 1;pthread_mutex_unlock(&mutex); //解锁//printf("res=%d\n", res);}Count = 0;//printf("11111111111111 == %ld\r\n",StatCount);if(StatCount == configvalues.SendCount * configvalues.MaxThread){GetLocaTime(1);printf("Success : %d *********** Fail : %d\r\n\r\n", SucceNum, ErrorNum);StatCount = 0;}Sleep(configvalues.TaskSleep);if(!strcmp(Putkey, "q"))break;} //清除curl操作. curl_easy_cleanup(curl); return NULL; }