?? udp_ce.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 + -