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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ceudp.cpp

?? WinCE下利用UDP和上位機(jī)進(jìn)行網(wǎng)絡(luò)通訊的例子
?? CPP
字號(hào):
// CEUDP.cpp: implementation of the CCEUDP class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "UDPDemo.h"
#include "CEUDP.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCEUDP::CCEUDP()
{
	
}

CCEUDP::~CCEUDP()
{
	
}

/******************************************************************************
	函數(shù)介紹:打開(kāi)UDP通訊端口
	入口參數(shù):pWnd: 指定父窗體指針 
              localPort: 指定遠(yuǎn)程UDP端口
              romoteHost:指定遠(yuǎn)程IP地址
              remotePort:指定遠(yuǎn)程UDP端口
	出口參數(shù):(無(wú))
	返 回 值:1代表成功;-1,-2,-3等都代表失敗
******************************************************************************/
DWORD CCEUDP::Open(CWnd* pWnd,int localPort,LPCTSTR remoteHost,int remotePort)
{
	m_pOwnerWnd = pWnd;
	
	// 加載winsock1.1動(dòng)態(tài)鏈接庫(kù)
	WSADATA wsa;
	if (WSAStartup(MAKEWORD(1,1),&wsa) != 0)
	{
		return -1;	// 代表失敗
	}
	
	// 創(chuàng)建UDP套接字
	m_UDPSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
	if (m_UDPSocket == INVALID_SOCKET)
	{
		return -2;
	}
	
	SOCKADDR_IN localAddr;
	localAddr.sin_family = AF_INET;
	localAddr.sin_port = htons(localPort);
	localAddr.sin_addr.s_addr = INADDR_ANY;
	
	// 綁定地址
	if(bind(m_UDPSocket,(sockaddr*)&localAddr,sizeof(localAddr))!=0)
	{
		return -3;
	}
	
	// 設(shè)置非堵塞通訊
	DWORD ul= 1;
	ioctlsocket(m_UDPSocket,FIONBIO,&ul);

	// 創(chuàng)建一個(gè)線程退出事件
	m_ExitThreadEvent	= CreateEvent(NULL,TRUE,FALSE,NULL);
	
	// 創(chuàng)建通訊線程
	AfxBeginThread(RecvThread,this);
	
	m_RemoteAddr.sin_family = AF_INET;
	m_RemoteAddr.sin_port = htons(remotePort);
	// 此處要將雙字節(jié)轉(zhuǎn)換成單字節(jié)
	char ansiRemoteHost[255];
	ZeroMemory(ansiRemoteHost, 255);
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,remoteHost,wcslen(remoteHost),
		                ansiRemoteHost,wcslen(remoteHost),NULL,NULL);
	m_RemoteAddr.sin_addr.s_addr = inet_addr(ansiRemoteHost);

	return 1;
}

/******************************************************************************
	函數(shù)介紹:關(guān)閉UDP通訊端口
	入口參數(shù):(無(wú))
	出口參數(shù):(無(wú))
	返 回 值:1代表成功;-1,-2等都代表失敗
******************************************************************************/
DWORD CCEUDP::Close(void)
{
	// 設(shè)置通訊線程退出事件,通知線程退出
	SetEvent(m_ExitThreadEvent);
	Sleep(2000);

	// 關(guān)閉線程句柄
	CloseHandle(m_ExitThreadEvent);

	// 關(guān)閉socket
	if (closesocket(m_UDPSocket) == SOCKET_ERROR)
	{
		return -1;
	}
	
	// 釋放socket資源
	if (WSACleanup() == SOCKET_ERROR)
	{
		return -2;
	}

	return 1;
}

/******************************************************************************
	函數(shù)介紹:發(fā)送數(shù)據(jù)
	入口參數(shù):buf:緩沖區(qū)數(shù)據(jù)
              len:緩沖數(shù)據(jù)長(zhǎng)度
	出口參數(shù):(無(wú))
	返 回 值:發(fā)送成功代表實(shí)際發(fā)送的字節(jié)數(shù),否則返回-1
******************************************************************************/
DWORD CCEUDP::SendData(const char *buf, int len)
{
	int nBytes = 0;
	int nSendBytes=0;
	int nSumBytes =0; 
	int nErrorCode;

	// 生成UDP數(shù)據(jù)包
	UDPData sendData;
	CopyMemory(sendData.FrameHead, FRAMEHEAD, 4);
	sendData.DataPackageLen = len;
	CopyMemory(sendData.FrameTail, FRAMETAIL, 4);
	
	nSumBytes = len + 12;	
	
	char * sendBuf;
	sendBuf = new char[nSumBytes];
	CopyMemory(sendBuf, sendData.FrameHead, 4);
	CopyMemory(sendBuf + 4, &(sendData.DataPackageLen), 4);
	CopyMemory(sendBuf + 8, buf, len);
	CopyMemory(sendBuf + 8 + len, sendData.FrameTail, 4);
	
	// 發(fā)送數(shù)據(jù)
	while (nSendBytes < nSumBytes)
	{
		nBytes = sendto(m_UDPSocket, sendBuf + nSendBytes, nSumBytes - nSendBytes, 0,
			            (sockaddr*)&m_RemoteAddr, sizeof(m_RemoteAddr));
		if (nBytes == SOCKET_ERROR )
		{
			nErrorCode = WSAGetLastError();
			m_OnUdpError(m_pOwnerWnd,nErrorCode);
			return -1;
		}
		if (nSendBytes == nSumBytes)
		{
			break;
		}
		Sleep(1000);
		nSendBytes = nSendBytes + nBytes;
	}
	delete[] sendBuf;
	return nSendBytes;
}

/******************************************************************************
	函數(shù)介紹:接收線程函數(shù)
	入口參數(shù):lparam : 指?jìng)鬟M(jìn)線程的參數(shù)
	出口參數(shù):(無(wú))
	返 回 值:無(wú)意義。
******************************************************************************/
UINT CCEUDP::RecvThread(LPVOID lparam)
{
	CCEUDP *pSocket;
	pSocket = (CCEUDP*)lparam;
	fd_set fdRead;
	int ret;
	TIMEVAL	aTime;
	char * recvBuf=NULL;
	aTime.tv_sec = 1;
	aTime.tv_usec = 0;
	SOCKADDR_IN tmpAddr;
	int tmpRecvLen;
	int recvLen;
	int iErrorCode;
	
	char * recvedBuf = NULL;
	int recvedBufLen;
	
	while (TRUE)
	{
        // 收到退出事件,結(jié)束線程
		if (WaitForSingleObject(pSocket->m_ExitThreadEvent,0) == WAIT_OBJECT_0)
		{
			break;
		}

		// 將set初始化空集合
		FD_ZERO(&fdRead);
		
		// 將pSocket->m_UDPSocket套接字添加到集合中
		FD_SET(pSocket->m_UDPSocket, &fdRead);
		
		// 調(diào)用select函數(shù),判斷套接字I/O狀態(tài)
		ret = select(0, &fdRead, NULL, NULL, &aTime);
		
		if (ret == SOCKET_ERROR)
		{
			iErrorCode = WSAGetLastError();
			pSocket->m_OnUdpError(pSocket->m_pOwnerWnd, iErrorCode);
			break;
		}
		
		if (ret > 0)
		{
			if (FD_ISSET(pSocket->m_UDPSocket, &fdRead))
			{
                tmpAddr.sin_family=AF_INET;             
                tmpAddr.sin_port = htons(pSocket->m_RemoteAddr.sin_port);
				tmpAddr.sin_addr.s_addr =INADDR_ANY;
                tmpRecvLen = sizeof(tmpAddr);
				
				recvBuf = new char[512];
				recvedBuf = new char[512];
				ZeroMemory(recvBuf,512);
				ZeroMemory(recvedBuf,512);
				recvLen = recvfrom(pSocket->m_UDPSocket,recvBuf, 512,0,(SOCKADDR*)&tmpAddr,&tmpRecvLen); 
				if (recvLen == SOCKET_ERROR)
				{
					iErrorCode = WSAGetLastError();
					pSocket->m_OnUdpError(pSocket->m_pOwnerWnd,iErrorCode);
					break;
				}
				else if (recvLen == 0)
				{
					iErrorCode = WSAGetLastError();
					pSocket->m_OnUdpError(pSocket->m_pOwnerWnd,iErrorCode);	
					break;
				}
				else
				{
					// 此處添加解析程序,將接收到的數(shù)據(jù)解析后,
					if (pSocket->HandlePackage(recvBuf, recvLen, recvedBuf, recvedBufLen))
					{
						pSocket->m_OnUdpRecv(pSocket->m_pOwnerWnd, recvedBuf, recvedBufLen, (SOCKADDR*)&tmpAddr);
					}
					delete []recvBuf;
					recvBuf = NULL;
					delete []recvedBuf;
					recvedBuf = NULL;
				}				
			}
		}
	}
	return 0;
}

/******************************************************************************
	函數(shù)介紹:處理接收到的數(shù)據(jù)包
	入口參數(shù):inBuf: 待處理的緩沖區(qū)
              inBufLen:待處理的緩沖區(qū)長(zhǎng)度
	出口參數(shù)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男女男精品视频网| 国产乱人伦偷精品视频不卡| 久久亚洲影视婷婷| 国产精品久久久久久久久免费相片 | 在线电影国产精品| 成人一区二区三区| 麻豆成人91精品二区三区| 亚洲精品久久久蜜桃| 久久久久久久久99精品| 欧美亚洲国产一区二区三区va | 91免费版pro下载短视频| 久久超碰97中文字幕| 亚洲综合色自拍一区| 日本一区二区成人在线| 精品国产一区二区三区久久久蜜月 | 久久久久免费观看| 日韩一区二区三区视频| 欧美日韩亚洲综合| 91久久奴性调教| 99免费精品视频| 国产在线国偷精品免费看| 亚洲超碰精品一区二区| 亚洲亚洲人成综合网络| 亚洲欧美日韩中文字幕一区二区三区| 久久一区二区视频| 亚洲精品在线一区二区| 日韩女优制服丝袜电影| 日韩欧美一区在线| 欧美一区三区二区| 欧美视频第二页| 欧美羞羞免费网站| 欧美日韩国产精选| 欧美日韩视频在线观看一区二区三区 | 久久久精品天堂| 精品人伦一区二区色婷婷| 日韩欧美一区二区视频| 日韩三级.com| 欧美精品一区二区精品网| 欧美精品一区二区三区蜜桃 | 中文字幕不卡在线观看| 国产午夜精品久久久久久久| 久久久精品国产99久久精品芒果| 欧美va亚洲va国产综合| 日本不卡123| 久久国产精品72免费观看| 激情综合五月天| 国产一区二区三区在线看麻豆| 激情综合色播五月| 国产美女在线精品| 成人午夜视频在线| 99久久国产综合精品麻豆| 色综合久久久久综合| 91搞黄在线观看| 欧美一区二区黄| 久久网这里都是精品| 国产精品丝袜久久久久久app| 国产精品污www在线观看| 日韩一区在线看| 亚洲成人777| 精品一区二区三区在线播放视频 | 91女厕偷拍女厕偷拍高清| 一本色道久久综合亚洲aⅴ蜜桃| 91传媒视频在线播放| 欧美日韩精品三区| 久久久另类综合| 亚洲精品伦理在线| 日本sm残虐另类| 国产成人免费视频网站| 日本韩国欧美一区二区三区| 欧美日韩不卡视频| 国产精品沙发午睡系列990531| 亚洲三级在线观看| 日本三级亚洲精品| 成人av在线播放网站| 欧美在线免费播放| 久久先锋影音av| 樱花影视一区二区| 久久国产夜色精品鲁鲁99| 成人激情综合网站| 在线成人小视频| 国产精品欧美综合在线| 日韩精品欧美成人高清一区二区| 国产在线精品不卡| 欧美色爱综合网| 国产日韩欧美综合在线| 亚洲成人福利片| 不卡的电影网站| 日韩精品最新网址| 亚洲免费观看视频| 加勒比av一区二区| 欧美久久一区二区| 国产精品二区一区二区aⅴ污介绍| 午夜久久久久久| 99久久99精品久久久久久| 久久伊人蜜桃av一区二区| 亚洲va欧美va人人爽| av高清久久久| 久久久综合精品| 开心九九激情九九欧美日韩精美视频电影| heyzo一本久久综合| 久久久一区二区三区捆绑**| 亚洲丶国产丶欧美一区二区三区| 国产精品一区二区在线播放| 欧美另类变人与禽xxxxx| 亚洲欧美日韩小说| 国产成人av福利| 欧美大片拔萝卜| 亚洲mv大片欧洲mv大片精品| 成av人片一区二区| 精品国产乱码久久久久久久久| 丝袜亚洲另类欧美| 色香蕉成人二区免费| 亚洲欧洲精品一区二区精品久久久 | 成人欧美一区二区三区小说| 国产麻豆成人传媒免费观看| 在线电影院国产精品| 亚洲一区二区美女| 色婷婷久久99综合精品jk白丝| 国产女主播视频一区二区| 久久99日本精品| 欧美一区二区三区人| 亚洲一级片在线观看| 99视频超级精品| 综合中文字幕亚洲| 99视频精品全部免费在线| 国产欧美日韩另类视频免费观看| 久久国产综合精品| 日韩欧美国产三级| 美脚の诱脚舐め脚责91| 欧美大片拔萝卜| 久草精品在线观看| www国产成人| 高清在线不卡av| 国产精品全国免费观看高清 | 色婷婷精品久久二区二区蜜臂av| 中文字幕二三区不卡| 成人黄色大片在线观看| 国产精品色一区二区三区| 成人国产亚洲欧美成人综合网| 国产视频视频一区| 风间由美中文字幕在线看视频国产欧美| 久久综合色一综合色88| 国产美女精品在线| 国产欧美日韩另类视频免费观看| 丁香天五香天堂综合| 国产精品另类一区| 91丨九色丨蝌蚪富婆spa| 亚洲一二三四在线观看| 337p亚洲精品色噜噜狠狠| 日本视频一区二区三区| 2021久久国产精品不只是精品| 国产不卡免费视频| 国产精品国产三级国产| 91国产丝袜在线播放| 午夜国产精品一区| 337p粉嫩大胆色噜噜噜噜亚洲| 成人综合婷婷国产精品久久免费| 国产精品久久久久久久午夜片| 91久久免费观看| 久久国产精品一区二区| 中文一区二区在线观看| 欧洲亚洲国产日韩| 免费精品视频在线| 国产精品美女久久久久久2018| 91激情在线视频| 美女网站在线免费欧美精品| 国产亚洲欧美日韩俺去了| 日本韩国视频一区二区| 捆绑变态av一区二区三区| 国产精品婷婷午夜在线观看| 在线观看区一区二| 极品尤物av久久免费看| 一区二区三区在线视频免费| 欧美电影免费观看高清完整版在线| 国产老肥熟一区二区三区| 夜夜嗨av一区二区三区中文字幕| 日韩欧美专区在线| 不卡视频一二三四| 免费成人在线视频观看| 专区另类欧美日韩| 日韩美女视频一区二区在线观看| 99re热这里只有精品免费视频| 日韩精品久久久久久| 国产精品久久三区| 日韩欧美资源站| 日本久久一区二区| 国产成a人亚洲| 免费三级欧美电影| 亚洲免费观看视频| 久久久精品欧美丰满| 69堂成人精品免费视频| av成人老司机| 韩国三级电影一区二区| 一个色在线综合| 中文字幕乱码一区二区免费| 91精品在线免费| 色婷婷综合久久久久中文 | 亚洲一二三区视频在线观看| 国产日韩精品视频一区| 日韩一区二区麻豆国产|