📄 udpsocket.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 + -