?? ceudp.h
字號:
// CEUDP.h: interface for the CCEUDP class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_CEUDP_H__9D1E867E_58EC_45C5_B886_3BC0E163A375__INCLUDED_)
#define AFX_CEUDP_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 UDPData
{
char FrameHead[4]; // 幀頭
DWORD DataPackageLen; // 幀長度
char* Buf; // 緩沖區數據
char FrameTail[4]; // 幀尾
} UDPData;
#pragma pack(pop)
// 發送錯誤、接收數據的回調函數 (需在主程序中實現)
typedef void (CALLBACK* ONUDPERROR)(CWnd*,int);
typedef void (CALLBACK* ONUDPRECV)(CWnd*,char* buf,int bufLen,sockaddr*);
// WinCE下利用UDP通訊的類
class CCEUDP
{
public:
CCEUDP();
virtual ~CCEUDP();
public:
// 接口函數
DWORD Open(CWnd* pWnd,int localPort, LPCTSTR remoteHost ,int remotePort); //打開UDP通訊
DWORD Close(void); //關閉UDP通訊
DWORD SendData(const char *buf, int len); //發送數據
// 接口事件
ONUDPERROR m_OnUdpError; // UDP發生錯誤事件
ONUDPRECV m_OnUdpRecv; // UDP接收數據事件
private:
SOCKET m_UDPSocket; //UDP Socket通訊套接字
struct sockaddr_in m_RemoteAddr; //存儲遠程通訊地址
HANDLE m_ExitThreadEvent; //線程退出事件
CWnd * m_pOwnerWnd; //存儲父窗體句柄
// 內部函數
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); // 查找字符串中的子串
};
#endif // !defined(AFX_CEUDP_H__9D1E867E_58EC_45C5_B886_3BC0E163A375__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -