📄 arwinclient_t.h
字号:
#ifndef ArWinClient_TH
#define ArWinClient_TH
#include <WinSock2.h>
#include <Ws2tcpip.h>
#include "..\public\ArNetInterface.h"
USE_NETPKG
//----------------------------------------------------------------------------------
#define CONTROL 0
#define DATA 1
//----------------------------------------------------------------------------------
class ArWinClient_T:public ArClient_T
{
public:
struct ArDataPackage_T
{
unsigned char ucType;
unsigned char ucControlType;
int iDataSize;
unsigned char ucVerify[58];
};
struct ArRunInfo_T
{
bool bStartRead ;
int iHasRead;
char* pcData ;
ArDataPackage_T DataReceive;
};
enum {MAX_DATA_BUFFER_SIZE = 512};
struct ArAsyncPara_T
{
WSABUF DataBuf;
char* pBuffer;
WSAOVERLAPPED Overlapped;
};
enum {MAX_MSG_SIZE = 4096};
struct ArAsyncMessagePara_T
{
WSABUF DataBuf;
char* pBuffer;
WSAOVERLAPPED Overlapped;
};
char m_SendMessagerBuffer[MAX_MSG_SIZE];
enum {MAX_MUTICAST_MSG_SIZE = 1024};
struct ArAsyncMutiCastPara_T
{
WSABUF DataBuf;
char* pBuffer;
WSAOVERLAPPED Overlapped;
};
char m_MutiCastBuffer[MAX_MUTICAST_MSG_SIZE];
bool __stdcall Create(unsigned long ulAddress, int iPort);
bool __stdcall Destroy(void);
bool __stdcall Open(void);
bool __stdcall SetMutiCastAdrr(int iAddr);
bool __stdcall SetDataSocketOpt(bool bHasRcvBuffer = true, bool bHasSndBuffer = true,
bool bEnableLinger = true, int iUserRcvBufferLen = 1024);
bool __stdcall SetMessageSocketOpt(bool bHasRcvBuffer = true, bool bHasSndBuffer = true,
bool bEnableLinger = true, int iUserRcvBufferLen = 1024);
bool __stdcall SetMutiCastSocketOpt(bool bHasRcvBuffer = true, bool bHasSndBuffer = true,
bool bEnableLinger = true, int iUserRcvBufferLen = 1024);
bool __stdcall Close(void);
int __stdcall SendData(char* pcData, int iLength);
int __stdcall SendDataPackage(char* pcData, int iLength);
bool __stdcall OnReceiveData(pOnReceiveData func);
bool __stdcall OnConnect(pOnConnect func);
bool __stdcall OnDisconnect(pOnConnect func);
ArWinClient_T(void* pPara);
~ArWinClient_T();
static void DrestroyClientHeap();
private:
SOCKET m_DataSocket;
SOCKET m_MessageSocket;
SOCKET m_MultiCastSocket;
ArAsyncPara_T m_DataSocketPara;
ArAsyncMutiCastPara_T m_MulitCastSocketPara;
ArAsyncMessagePara_T m_MessageSocketPara;
ArSenderInfo_T m_SenderInfo;
unsigned long m_ulAddress;
static HANDLE m_hHeap;
HANDLE m_hOpenClientEvent;
bool m_bExitThread;
bool m_bConnected;
bool m_bCreate;
bool m_bHasRun;
bool m_bIsServerDisconnect;
bool m_bAutoDisconnect;
struct sockaddr_in m_ServerAddr;
struct sockaddr_in m_MessageServerAddr;
struct sockaddr_in m_LocalMessageAddr;
struct sockaddr_in m_MutiCastAdrr;
int m_iPort;
int m_iMaxReceiveDataLength;
int m_iMaxDataBufferSize;
int m_iMaxMsgBufferSize;
int m_iMaxMultCastMsgSize;
bool m_bDataHasRcvBuffer;
bool m_bDataHasSendBuffer;
bool m_bDataEnableLinger;
bool m_bMessageHasRcvBuffer;
bool m_bMessageHasSendBuffer;
bool m_bMessageEnableLinger;
bool m_bMultiCastHasRcvBuffer;
bool m_bMultiCastHasSendBuffer;
bool m_bMultiCastEnableLinger;
bool m_bIsDestroy;
unsigned long m_uiReceiveThread;
unsigned long m_uiMessageThread;
unsigned long m_uiMultiCastThread;
unsigned long m_uiServerConnectThread;
unsigned long m_uiOpenClientThread;
pOnReceiveData m_pReceiveDataFunc;
pOnConnect m_pConnectFunc;
pOnConnect m_pDisConnectFunc;
void* m_pPara;
void* m_pThreadDisconnect;
enum {MAX_CLIENT_DATA_BUFFER = 1024 * 1024};
char* m_pcDataSendBuffer;
static unsigned int __stdcall ServerDisConnect(void* pParent);
static unsigned int __stdcall StartConect(void* pParent);
static unsigned int __stdcall ReceiveData(void* pParent);
static unsigned int __stdcall SocketMessage(void* pParent);
static unsigned int __stdcall SocketMultiCast(void* pParent);
bool CreateSocket(void);
void CloseSocket(void);
bool OpenClient(void);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -