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

📄 arwinclient_t.h

📁 wangchuanDll.rar 网络传输的DLL 源代码
💻 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 + -