亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? udpserver.cpp

?? linux下使用C++編程
?? CPP
字號:
#include "UdpServer.h"

/////////////////////////////////////////////////////////////////////////////
CUdpServer::CUdpServer()
{
	m_nPort = 0;
	m_nType = SOCK_DGRAM;
	
	memset(m_FileDir,0,sizeof(m_FileDir));
	//memset( m_pszBuffer, 0, sizeof(m_pszBuffer) );
	//m_nBufferEnd = 0;
	m_hSocket = INVALID_SOCKET;
	m_bReceiveRun = false;
	m_bProcessRun = false;
}
/////////////////////////////////////////////////////////////////////////////
CUdpServer::~CUdpServer()
{
	m_bWillExit = true;
	m_ThreadMutex.UnLock();
	m_ProcessEvent.SetEvent();
	while(m_bReceiveRun || m_bProcessRun)
		MilliSleep(200);
	if( m_hSocket != INVALID_SOCKET )
	{
		closesocket( m_hSocket );
		m_hSocket = INVALID_SOCKET;
	}
}
SOCKET CUdpServer::Socket(int nDomain, int nType, int nProtocol)
{
	m_hSocket = socket(nDomain, nType, nProtocol);
	m_nType = nType;
	int nLength = 640000;
	setsockopt(m_hSocket,SOL_SOCKET,SO_RCVBUF,(const 	char*)&nLength,sizeof(nLength));
	setsockopt(m_hSocket,SOL_SOCKET,SO_SNDBUF,(const char*)&nLength,sizeof(nLength));
	return m_hSocket;
}
/////////////////////////////////////////////////////////////////////////////
bool CUdpServer::Init( char* path,UINT nPort )
{
	m_nPort = nPort;

	strcat(m_FileDir,path);
	strcat(m_FileDir,"/data");
//	CreateDirectory(m_FileDir);

	sockaddr_in	sockAddr;
	sockAddr.sin_port = htons( m_nPort );
	sockAddr.sin_family = AF_INET;
	sockAddr.sin_addr.s_addr = htonl( INADDR_ANY );
	
	Socket( AF_INET, SOCK_DGRAM, 0 );
	if( m_hSocket == INVALID_SOCKET )
		return false;
	
	int cRet = bind( m_hSocket, (sockaddr *)(&sockAddr), sizeof(sockAddr) );
	if( cRet == SOCKET_ERROR )
	{
		if( errno != EINPROGRESS )
		{
			closesocket( m_hSocket );
			m_hSocket = INVALID_SOCKET;
			return false;
		}
	}
	int bOpt;

	if( m_nPort == 0 )
		return true;
	
    	bool bRet = CreateThreadEx(ReceiveThread, this);
    	if( bRet == false )
	{
		closesocket( m_hSocket );
		m_hSocket = INVALID_SOCKET;
        	return false;
    	}

	/*暫時僅用一個線程處理.
    	bRet = CreateThreadEx(ProcessThread, this);
    	if( bRet == false )
	{
		closesocket( m_hSocket );
		m_hSocket = INVALID_SOCKET;
        	return false;
    	}
        */
	return true;
}
/////////////////////////////////////////////////////////////////////////////
ThreadFuncRet CUdpServer::ReceiveThread(LPVOID pUdpWorker)
{
	CUdpServer * pThis = (CUdpServer *)pUdpWorker;

	sockaddr_in sockFrom;
	socklen_t nAddrLength = sizeof(sockaddr);
	fd_set rfds;
	pThis->m_bReceiveRun = true;	char buffer[RCV_BUFFER_SIZE];
	while( !pThis->m_bWillExit ) 
	{
		struct timeval tv = {0, 300000};
		FD_ZERO(&rfds);
		FD_SET(pThis->m_hSocket, &rfds);		
		if( select(pThis->m_hSocket+1, &rfds, NULL, NULL, &tv) > 0 )		{
			int iCount = recvfrom(pThis->m_hSocket,buffer,sizeof(buffer),0,(sockaddr *)&sockFrom,&nAddrLength);
			if( iCount >0 )
			{				
				//處理報文
				pThis->process(buffer);
			}
		}
		else if( pThis->m_bWillExit )
			break;
		else
			continue;
	}
	pThis->m_bReceiveRun = false;

	return 0;
}
bool	CUdpServer::process(char* buffer){
	int ai_number = 0;
	int di_number = 0;        int length =0;        int jz_no = 0;        int systime;
	char PacketType[5];
	bool isValid = false;
	memcpy(PacketType,buffer,4);        PacketType[4]=0;	//printf("PacketType is %s\n",PacketType);	//fflush(stdout);
	
	if(strcmp(PacketType,"REAL")==0){
		isValid = true;
	}
	if(isValid)	{
		memcpy(&jz_no,buffer+8,4);                memcpy(&ai_number,buffer+20,4);
		memcpy(&di_number,buffer+24,4);                memcpy(&systime,buffer+16,4);
		//寫實時文件
		length = 30+ai_number*4+di_number*1;
		FILE *fp;
		char real_file[MAX_PATH],his_file[MAX_PATH];
		sprintf(real_file,"%s/realtime%d.txt",m_FileDir,jz_no);
		sprintf(his_file,"%s/unit%d/%d.txt",m_FileDir,jz_no,systime);//nowInSecond()
		if((fp=fopen(real_file,"wb"))!=NULL)		{
			fwrite(buffer,length,1,fp);
			fclose(fp);
			//寫歷史文件
			DeleteFile(his_file);
			CopyFile(real_file,his_file);
		}
		printf("recieve ok\n");		fflush(stdout);
	}	else	{		FILE *fplog;		char log_file[MAX_PATH];		sprintf(log_file,"%s/log.txt",m_FileDir);                SYSTEMTIME SysTime;		GetLocalTime( SysTime);		if((fplog=fopen(log_file,"a+"))!=NULL)		{
			fprintf(fplog,"%d-%d-%d %d:%d:%d  recieve data format error!\n",SysTime.wYear,SysTime.wMonth,SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);
			fclose(fplog);
			//寫歷史文件
		}
		printf("UDPrecv:recv error data.\n");
		fflush(stdout);		
	}	
	return true;
}
/////////////////////////////////////////////////////////////////////////////
ThreadFuncRet CUdpServer::ProcessThread(LPVOID pUdpWorker)
{
	CUdpServer * pThis = (CUdpServer *)pUdpWorker;
	pThis->m_bProcessRun = true;
	while( !pThis->m_bWillExit ) 
	{
		//以下代碼作測試用
		MilliSleep(2000);
		char buff[1024];
		int ai_num = 2;
		int di_num = 2;
		float ai_value = 1.23;
		short di_value = 1;
		int checksum = 4;
		memcpy(buff,&ai_num,4);
		memcpy(buff+4,&di_num,4);
		memcpy(buff+8,&ai_value,4);
		memcpy(buff+12,&ai_value,4);
		memcpy(buff+16,&di_value,2);
		memcpy(buff+18,&di_value,2);
		memcpy(buff+20,&checksum,4);
		pThis->Test(buff,24);
	}
	pThis->m_bProcessRun = false;
	return 0;
}

bool CUdpServer::Test(char * pBuffer,int buf_size)
{
	sockaddr_in sockAddr;
	sockAddr.sin_port = htons( m_nPort );
	sockAddr.sin_family = AF_INET;
	int nAddrSize = sizeof(sockaddr);
	sockAddr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
	sendto(m_hSocket, pBuffer,buf_size , 0, (sockaddr *)&sockAddr, nAddrSize);
	return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线不卡a资源高清| 成人午夜在线视频| 欧美视频完全免费看| 一区二区理论电影在线观看| 一本大道久久a久久精品综合| 亚洲色图视频免费播放| 91麻豆123| 香港成人在线视频| 日韩美一区二区三区| 国内精品在线播放| 国产精品欧美极品| 在线观看日韩高清av| 天天色综合成人网| 欧美精品一区二区三区视频| 国产精华液一区二区三区| 国产精品国模大尺度视频| 91免费在线视频观看| 午夜精品福利一区二区三区av| 欧美一区二区三区人| 国产福利一区二区三区视频在线 | a4yy欧美一区二区三区| 亚洲精品中文在线影院| 在线不卡a资源高清| 国产精品1区2区| 亚洲精品伦理在线| 日韩欧美国产综合在线一区二区三区| 国产乱色国产精品免费视频| 亚洲免费在线看| 欧美一区二区精品在线| www.亚洲人| 麻豆91在线播放免费| 国产精品美女久久久久av爽李琼| 欧美体内she精高潮| 国产白丝网站精品污在线入口| 亚洲激情成人在线| 精品女同一区二区| 色噜噜夜夜夜综合网| 麻豆精品一区二区av白丝在线| 亚洲人成网站色在线观看| 日韩一级高清毛片| 色婷婷久久久综合中文字幕| 久久国产综合精品| 亚洲一区免费在线观看| 久久蜜桃香蕉精品一区二区三区| 欧美日精品一区视频| 床上的激情91.| 奇米一区二区三区| 亚洲综合另类小说| 欧美国产日韩一二三区| 日韩三级电影网址| 欧美吻胸吃奶大尺度电影| 东方aⅴ免费观看久久av| 日本午夜一本久久久综合| 亚洲精品一二三| 国产三级欧美三级日产三级99| 自拍偷拍欧美激情| 久久这里都是精品| 日韩欧美一区在线| 欧美日韩大陆一区二区| 91黄视频在线观看| va亚洲va日韩不卡在线观看| 国产一区二区网址| 日韩电影免费在线观看网站| 亚洲bt欧美bt精品777| 亚洲色图在线视频| 亚洲视频 欧洲视频| 国产精品久久久一本精品| 久久久精品免费观看| ww亚洲ww在线观看国产| 欧美大片顶级少妇| 日韩欧美综合一区| 日韩午夜小视频| 欧美一区二区三区男人的天堂| 欧美人与性动xxxx| 欧美精品久久天天躁| 欧美日韩国产经典色站一区二区三区| 色丁香久综合在线久综合在线观看| 成人av在线网| 93久久精品日日躁夜夜躁欧美| 成人午夜短视频| 成人伦理片在线| 99国内精品久久| 91在线视频在线| 91黄色激情网站| 中文字幕一区二区三区蜜月| 国产免费成人在线视频| 中文字幕欧美日韩一区| 国产精品你懂的| 亚洲人成网站精品片在线观看| 亚洲欧美日韩国产一区二区三区| 一区二区三区在线观看欧美| 亚洲午夜免费视频| 日日夜夜精品视频天天综合网| 蜜桃视频免费观看一区| 国产精品一色哟哟哟| 成人av在线影院| 欧美亚男人的天堂| 欧美一二区视频| 久久久www免费人成精品| 国产欧美日韩综合| 亚洲女同ⅹxx女同tv| 日韩国产精品久久| 另类成人小视频在线| 国产.精品.日韩.另类.中文.在线.播放| 国产ts人妖一区二区| 色综合久久六月婷婷中文字幕| 欧美在线一区二区三区| 精品欧美久久久| 亚洲三级小视频| 五月婷婷激情综合网| 国产高清精品在线| 在线一区二区观看| 欧美sm极限捆绑bd| 亚洲欧洲日韩一区二区三区| 婷婷一区二区三区| 成人小视频在线| 在线电影院国产精品| 国产视频一区不卡| 亚洲va在线va天堂| 国产高清久久久| 在线播放/欧美激情| 久久久久久久久97黄色工厂| 一级中文字幕一区二区| 国产在线精品视频| 欧美亚洲一区二区在线观看| 亚洲精品一线二线三线| 夜夜嗨av一区二区三区网页| 国产一区在线观看视频| 亚洲男帅同性gay1069| 精彩视频一区二区三区| 色婷婷国产精品| 久久美女艺术照精彩视频福利播放| 亚洲九九爱视频| 国产一区三区三区| 欧美午夜精品一区| 国产精品麻豆欧美日韩ww| 日产精品久久久久久久性色| 成人aaaa免费全部观看| 91精品国产综合久久久久久久久久| 国产精品三级av| 久久er精品视频| 欧美日韩精品专区| 综合久久国产九一剧情麻豆| 国产真实乱对白精彩久久| 欧美精选午夜久久久乱码6080| 中文字幕一区二区三区在线播放 | 亚洲激情自拍视频| 国产不卡视频在线播放| 欧美变态凌虐bdsm| 偷偷要91色婷婷| 欧美色男人天堂| 亚洲男人天堂一区| 99精品久久99久久久久| 国产精品欧美一区喷水| 国产黄人亚洲片| 久久综合久久综合亚洲| 性久久久久久久久久久久| 色哟哟日韩精品| 综合在线观看色| 97久久人人超碰| 综合久久一区二区三区| 成人高清伦理免费影院在线观看| 久久综合色婷婷| 国产精品99久| 国产色综合一区| 成人黄页毛片网站| 欧美国产国产综合| 欧美成人a∨高清免费观看| 亚洲chinese男男1069| 欧美日韩一区二区电影| 亚洲电影第三页| 制服丝袜亚洲播放| 美腿丝袜在线亚洲一区| 精品成a人在线观看| 极品销魂美女一区二区三区| 精品国产免费一区二区三区香蕉| 韩国欧美一区二区| 久久午夜老司机| 国产91综合网| 一区免费观看视频| 一本到一区二区三区| 亚洲成人黄色小说| 日韩一区二区不卡| 国产精品 欧美精品| 国产精品久久久99| 欧洲精品一区二区三区在线观看| 亚洲精品日产精品乱码不卡| 欧美日精品一区视频| 美女视频一区在线观看| 欧美精品一区二区三区高清aⅴ| 国产盗摄女厕一区二区三区| 欧美国产精品中文字幕| 色久综合一二码| 首页亚洲欧美制服丝腿| 日韩欧美一二区| 成人精品视频一区| 亚洲一区在线观看视频| 日韩欧美一级精品久久| 成人av电影在线播放| 亚洲无人区一区|