📄 transport.h
字号:
//transport.h
///////////////////////////////////////////////////////////////////////////////
#ifndef _TRANSPORT_H_
#define _TRANSPORT_H_
/*///////////////////////////////////////////////////////////////////////////* /
#if defined(__cplusplus)
extern "C" {
#endif
/*///////////////////////////////////////////////////////////////////////////*/
///////////////////////////////////////////////////////////////////////////////
#include <winsock2.h>
#include <process.h>
#include "TableInfoMgr.h"
///////////////////////////////////////////////////////////////////////////////
#ifndef IMPORTS
#define DLLENTRY __declspec(dllexport)
#else
#define DLLENTRY __declspec(dllimport)
#endif
///////////////////////////////////////////////////////////////////////////////
typedef int TransportBool;
typedef int TransportStatus;
typedef char TransportData;
typedef unsigned long TransportLength;
typedef int TransportError;
typedef unsigned long ULong;
typedef unsigned short UShort;
typedef unsigned long TransportHandle;
///////////////////////////////////////////////////////////////////////////////
typedef enum _tagTransportBool
{
TRANSPORT_FALSE = 0,
TRANSPORT_TRUE = 1
} ETransportBool;
typedef enum _tagTransportStatus
{
TRANSPORT_UNKNOWN = -2,
TRANSPORT_ERROR = -1,
TRANSPORT_OK = 0,
} ETransportStatus;
typedef enum _tagTransportType
{
Transport_Undefined,
Transport_Client,
Transport_Server
} ETransportType;
typedef enum _tagTransportEvents
{
Transport_ReadEv,
Transport_WriteEv,
Transport_AcceptEv,
Transport_ConnectEv,
Transport_CloseEv
} ETransportEvent;
typedef struct _tagTransportAddress
{
ULong ip; /* 4 byte IP address, network format */
UShort port; /* 2 byte port number, host format */
} TransportAddress;
///////////////////////////////////////////////////////////////////////////////
////////////////////////define callback functions//////////////////////////////
/*net event callback*/
typedef void (*LPTRANSPORT_EVENT)(IN SOCKET hSocket, IN ETransportEvent eEvent,
IN void *pDataBuf, IN unsigned long nDataLen,
IN int nError, IN void *pContext);
/*obtain packet size from packet header callback*/
typedef void (*LPTRANSPORT_GETDATABUFLEN)(IN SOCKET hSocket, IN void *pHeaderBuf,
OUT unsigned long *nDataLen);
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
TransportStatus Transport_Init();
TransportStatus Transport_UnInit();
ULong Transport_GetLocalHostIp(OUT char *pIpAddress, IN int nIpBufLen,
OUT char *pHostName, IN int nHostNameLen);
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
class CTransport
{
public:
CTransport();
~CTransport();
SOCKET Transport_Create(IN ETransportType eType,
IN TransportAddress *pLocalAddress,
IN LPTRANSPORT_EVENT eventHandler,
IN LPTRANSPORT_GETDATABUFLEN getDataBufLenCb,
IN TransportLength nHeaderStructLen,
IN void *pContext);
TransportStatus Transport_Destory();
TransportStatus Transport_Connect(IN TransportAddress *pRemoteAddress);
TransportLength Transport_Send(IN SOCKET hSocket, IN void *pDataBuf, IN TransportLength nDataLen);
public:
SOCKET GetSocket();
ETransportType GetTransportType();
CTableInfoMgr *GetConnectionTable();
private:
SOCKET m_hSocket;
ETransportType m_eTransportType;
CTableInfoMgr s_tConnectionTable; /*connections manager*/
private:
TransportHandle m_hAcceptThreadHandle;
TransportHandle m_hReceiveThreadHandle;
};
/*///////////////////////////////////////////////////////////////////////////* /
#if defined(__cplusplus)
}
#endif
/*///////////////////////////////////////////////////////////////////////////*/
#endif /*_TRANSPORT_H_*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -