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

📄 udpsocket.h

📁 学习嵌入式LINUX的好东西
💻 H
字号:
#pragma once

#include "winbase.h"
#include "Winsock.h"

#pragma comment(lib,"winsock.lib")

#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 CUDPSocket
{
public:
	CUDPSocket(void);
	~CUDPSocket(void);

public:
	DWORD Open(CWnd* pWnd, int localPort, LPCTSTR remoteHost, int remotePort);
	DWORD Close(void);
	DWORD SendData(const char * buf, int len);
public:
public:
    //UDP发生错误事件
    ONUDPERROR m_OnUdpError;
	//UDP接收数据事件
    ONUDPRECV  m_OnUdpRecv;

private:
	bool HandlePackage(const char * inbuf, int inBufLen, char * outBuf, int & outBufLen);
	int pos(LPCSTR aSubStr, const char * aBuf, int len);
	static UINT RecvThread(LPVOID lparam);
private:
	SOCKET m_UDPSocket;
	struct sockaddr_in m_RemoteAddr;
	HANDLE m_ExitThreadEvent;
	CWnd *m_pOwnerWnd;
#pragma pack(pop)
};

⌨️ 快捷键说明

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