⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udp_ce.h

📁 wince.net 下的UDP网络程序的源代码
💻 H
字号:
// UDP_CE.h: interface for the CUDP_CE class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_UDP_CE_H__9D1E867E_58EC_45C5_B886_3BC0E163A375__INCLUDED_)
#define AFX_UDP_CE_H__9D1E867E_58EC_45C5_B886_3BC0E163A375__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "WinSock.h"

#pragma pack(push,1)

//包头
const LPCSTR FRAMEHEAD = "!@#$";
//包尾
const LPCSTR FRAMETAIL = ")(*&";
//UDP传输数据包结构
typedef struct CUDPData
{
	char  FrameHead[4]; //帧头
	DWORD DataPackageLen;  //帧长度
	char * Buf;     //缓冲区数据
    char FrameTail[4];   //帧尾
}UDPData;

//UDP客户端发送错误回调函数
typedef void (CALLBACK* ONUDPERROR)(CWnd*,int);
//UDP客户端接收数据回调函数
typedef void (CALLBACK* ONUDPRECV)(CWnd*,char* buf,int bufLen,sockaddr*);


class CUDP_CE  
{
public:
	CUDP_CE();
	virtual ~CUDP_CE();
public:
	//打开UDP通讯
    DWORD Open(CWnd* pWnd,int localPort, LPCTSTR remoteHost ,int remotePort);
	//关闭UDP通讯
	DWORD Close(void);

	//发送数据
	DWORD SendData(const char *buf, int len);
public:
    //UDP发生错误事件
    ONUDPERROR m_OnUdpError;
	//UDP接收数据事件
    ONUDPRECV  m_OnUdpRecv;

private:
	SOCKET m_UDPSocket;                   //UDP Socket通讯套接字
    struct sockaddr_in m_RemoteAddr;      //存储远程通讯地址
    HANDLE m_ExitThreadEvent;             //线程退出事件
	CWnd * m_pOwnerWnd;                   //存储父窗体句柄


private:
	//通讯线程函数
    static UINT RecvThread(LPVOID lparam);

	//拆包函数
	bool HandlePackage(const char *inBuf,int inBufLen
					   ,char *outBuf,int &outBufLen);
	//查找子串
    int pos(LPCSTR aSubStr, const char *aBuf, int len);

};

#pragma pack(pop)
#endif // !defined(AFX_UDP_CE_H__9D1E867E_58EC_45C5_B886_3BC0E163A375__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -