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

📄 clientobj.h

📁 一个打包好的.NET环境下的TCP插口组件
💻 H
字号:
// ClientObj.h : Declaration of the CClientObj

#ifndef __CLIENTOBJ_H_
#define __CLIENTOBJ_H_

#include "resource.h"       // main symbols

/////////////////////////////////////////////////////////////////////////////
// CClientObj
class ATL_NO_VTABLE CClientObj : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CClientObj, &CLSID_ClientObj>,
	public IDispatchImpl<IClientObj, &IID_IClientObj, &LIBID_XYNETCOMCLIENTLib>
{
	friend void WorkerProc(void* pParam);

	BOOL m_bReconnect;
	long m_nReadTimeout;
	long m_nMaxDataSize;
	long m_nSize;
	BOOL m_bIsBinary;
	BYTE* m_pData;
	BSTR m_sError;
	long m_nErrorCode;
	BSTR m_sRemoteAddress;
	long m_nRemotePort;
	SOCKET m_socket;
	BOOL SendRawData(BYTE *pData, long nSize);

public:
	CClientObj()
	{
		m_bReconnect = TRUE;
		m_nReadTimeout = 30;
		m_nMaxDataSize = 4*1024*1024;
		m_pData = NULL;
		m_nSize = 0;
		m_bIsBinary = FALSE;
		m_sError = NULL;
		m_nErrorCode = 0;
		m_sRemoteAddress = NULL;
		m_nRemotePort = 0;
		m_socket = INVALID_SOCKET;
	}
	~CClientObj()
	{
		Reset();
		if(m_sRemoteAddress!=NULL) ::SysFreeString(m_sRemoteAddress);
		if(m_sError!=NULL) ::SysFreeString(m_sError);
		if(m_pData!=NULL) delete []m_pData;
	}

DECLARE_REGISTRY_RESOURCEID(IDR_CLIENTOBJ)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CClientObj)
	COM_INTERFACE_ENTRY(IClientObj)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// IClientObj
public:
	STDMETHOD(SetMaxDataSize)(/*[in]*/ long nMaxDataSize);
	STDMETHOD(SetReadTimeout)(/*[in]*/ long nReadTimeout);
	STDMETHOD(GetLastErrorCode)(/*[out, retval]*/ long* pOutput);
	STDMETHOD(GetBinaryData)(/*[out]*/ long* pSize, /*[out, retval]*/ long* pData);
	STDMETHOD(GetStringData)(/*[out, retval]*/ BSTR* pOutput);
	STDMETHOD(GetLastError)(/*[out, retval]*/ BSTR* pOutput);
	STDMETHOD(ReceiveData)(/*[out]*/ long* pSize, /*[out]*/ BOOL* pIsBinary, /*[out, retval]*/ BOOL* pOutput);
	STDMETHOD(SendStringData)(/*[in]*/ BSTR sData, /*[out, retval]*/ BOOL* pOutput);
	STDMETHOD(SendBinaryData)(/*[in]*/ BYTE* pData, /*[in]*/ long nSize, /*[out, retval]*/ BOOL* pOutput);
	STDMETHOD(Reset)();
	STDMETHOD(Connect)(/*[in]*/ BSTR sRemoteAddress, /*[in]*/ long nRemotePort, /*[out, reval]*/ BOOL* pOutput);
};

#endif //__CLIENTOBJ_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -