www.pudn.com > MyLinuxThread.rar > Data.h, change:2007-05-25,size:2338b
///
/// @file Data.h
/// @brief 套接字发送接收的封装
/// @author guozhiming
/// @date 2007-05-21
///
#ifndef __DATA__
#define __DATA__
#include "def.h"
#include "RecvMessThread.h"
#include "SendMessThread.h"
class G_RecvMessThread;
class G_SendMessThread;
class G_Data
{
public:
/// @brief 构造函数
G_Data(G_RecvMessThread *recvMessThread);
G_Data();
/// @brief 析构函数
~G_Data();
/// @brief 接收数据并存到缓冲池中
///
/// @param nSocket 套接字
///
/// @return 如果收到数据返回成功 , 如果client关闭返回false
bool recvData(int nSocket);
/// @brief 发送数据
///
/// @param nSocket 套接字
/// @param pData 数据包
/// @param nLen 数据包长度
///
/// @return
int sendData(int nSocket , const void *pStr , unsigned int nLen);
private:
/// @brief 发送数据
///
/// @param nSocket 套接字
/// @param ptr 发送数据
/// @param nLen 数据长度
///
/// @return 发送数据长度
int sendn(int nSocket , const void *pStr , unsigned int nLen);
/// @brief 从套接口接受数据
///
/// @param nSocket 套接口
/// @param pStr 存放数据
/// @param nLen 长度
///
/// @return 返回接受数据长度
int recvn(int nSocket , void *pStr , unsigned int nLen);
/// @brief 对数据进行打包
///
/// @param pStr 输入数据
/// @param nLen 数据包长度
/// @param pBuffer 输出数据
///
/// @return
int packet(const void *pStr , unsigned int nLen , char *pBuffer);
/// @brief 对数据进行解包
///
/// @param in 输入数据
/// @param fromLen 从什么地方开始
/// @param nLen 数据长度
/// @param out 输出数据
///
//void unPacket(const char *in , unsigned int fromLen , unsigned int nLen , char *out);
void unPacket(const void *in , unsigned int fromLen , unsigned int nLen , void *out);
/// @brief 返回数据包大小
///
/// @param pData 数据包
///
/// @return 包的大小
int packetSize(const char *pStr);
G_RecvMessThread *g_recvMessThread;
/// @brief 数据包大小
static const unsigned int G_MAXDATABUFFSIZE = 65535;
/// @brief 数据包包头大小
static const unsigned int G_PHLEN = sizeof(unsigned int);
};
#endif