111

#include <stdio.h>
#include <stdlib.h>
#include "curl/curl.h"
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <algorithm>
#include <numeric>
#include <vector>
#include "Initialize.h"

//#define MAX_THREAD 30//总发送次数
int RecNum = 0;//成功接收到得次数
unsigned long long FirstTime = 0;//第一次发送的时间
pthread_mutex_t mutex;//定义线程锁

std::vector<unsigned long long> m_PacketUseTime;//收到包消耗的时间

//配置文件参数结构体 
extern struct ConfigValue configvalues;

struct HttpStatistics	//计时
{
	unsigned long long requestTime;
	unsigned long long responseTime; 
};

struct HttpGetParam	//参数
{
	char *url;
	struct HttpStatistics httpStatistics;
};

unsigned long long GetCurrentNanoseconds()//当前时间
{
	struct timespec tvTime;
	clock_gettime(CLOCK_REALTIME, &tvTime);
	return (unsigned long long)tvTime.tv_sec * 1000000000ULL + (unsigned long long)tvTime.tv_nsec;
}

static size_t write_data(void *ptr, size_t size, size_t nmemb, void *param)
{
	return size * nmemb;
}


static size_t head_data(void *ptr, size_t size, size_t nmemb, void *param)
{
	struct HttpGetParam *phttpGetParam = (struct HttpGetParam *)param;
	unsigned long long currentTime = 0;
	unsigned long long usedTime = 0;
	//const char *Hopedata = "HTTP/1.1 200 OK\r\n";

	if ( phttpGetParam->httpStatistics.responseTime == 0)//只记录第一次收到报文时候的内容
	{
		currentTime = GetCurrentNanoseconds();
		phttpGetParam->httpStatistics.responseTime = currentTime;
		//printf("111111111== %llu\r\n",phttpGetParam->httpStatistics.requestTime);
		usedTime = currentTime - phttpGetParam->httpStatistics.requestTime;
		//printf("222222222== %llu\r\n",currentTime);
		printf("Time is:%llu\n", usedTime);
		printf("%s\n", (char*)ptr);
	
		
		pthread_mutex_lock(&mutex);   //上锁
		
		m_PacketUseTime.push_back(usedTime);

		//usleep(2000);
		pthread_mutex_unlock(&mutex); //解锁
		
		//printf("AAAAAAAAAA == %s\r\n",configvalues.HopeData);
		if(!strcmp((char*)ptr, configvalues.HopeData))
		{
			RecNum = RecNum + 1; 
		}
	
	}
	return size * nmemb;
}


 

你可能感兴趣的:(111)