16,471
社区成员
发帖
与我相关
我的任务
分享
//初始化客户端handleData
m_pHandleData = new PER_HANDLE_DATA;
m_pHandleData->sendIO = NULL;
m_pHandleData->recvIO = NULL;
m_pHandleData->sock = m_connectSock;
//接收结构
if (m_pHandleData->recvIO == NULL)
{
m_pHandleData->recvIO = new PER_IO_DATA;
if (m_pHandleData->recvIO == NULL)
{
delete m_pHandleData;
return -1;
}
memset(m_pHandleData->recvIO, 0, sizeof(PER_IO_DATA));
m_pHandleData->recvIO->IoType = IoRecv;
m_pHandleData->recvIO->pBuffer = new char[MAX_BUFFER_SIZE];
}
//发送结构
if (m_pHandleData->sendIO == NULL)
{
m_pHandleData->sendIO = new PER_IO_DATA;
if (m_pHandleData->sendIO == NULL)
{
delete m_pHandleData->recvIO;
delete m_pHandleData;
return -1;
}
memset(m_pHandleData->sendIO, 0, sizeof(PER_IO_DATA));
m_pHandleData->sendIO->IoType = IoSend;
m_pHandleData->sendIO->pBuffer = new char[MAX_BUFFER_SIZE];
}
if (m_pHandleData != NULL)
{
if (m_pHandleData->sock != INVALID_SOCKET)
{
closesocket(m_pHandleData->sock);
}
m_pHandleData->sock = INVALID_SOCKET;
LPPER_IO_DATA tempIO = NULL;
tempIO = m_pHandleData->recvIO;
if (tempIO != NULL)
{
if (tempIO->pBuffer != NULL)
{
delete []tempIO->pBuffer;
}
delete tempIO;
}
tempIO = m_pHandleData->sendIO;
if (tempIO != NULL)
{
if (tempIO->pBuffer != NULL)
{
delete []tempIO->pBuffer;
}
delete tempIO;
}
delete m_pHandleData;
}
typedef struct _PER_IO_DATA
{
map<int, LPPER_FILE_DATA> fileManageMap; //int:文件ID
OVERLAPPED overLapped;
WSABUF wsDataBuf;
char *pBuffer;
IO_TYPE IoType;
}PER_IO_DATA, *LPPER_IO_DATA;
typedef struct _PER_HANDLE_DATA
{
SOCKET sock;
SOCKADDR_IN addr;
LPPER_IO_DATA sendIO;
LPPER_IO_DATA recvIO;
}PER_HANDLE_DATA, *LPPER_HANDLE_DATA;
typedef struct _PER_IO_DATA
{
map<int, LPPER_FILE_DATA> fileManageMap; //int:文件ID
OVERLAPPED overLapped;
WSABUF wsDataBuf;
char *pBuffer;
IO_TYPE IoType;
}PER_IO_DATA, *LPPER_IO_DATA;
typedef struct _PER_FILE_DATA
{
HANDLE hFile;
HANDLE hFileMapping;
PVOID pvFile;
DWORD dwFileSize;
DWORD dwFileOffset;
DWORD dwFileMapviewUsed;
DWORD dwFileMapview;
int nFileID;
FILE_TYPE FileType;
CRITICAL_SECTION csFileData;
}PER_FILE_DATA, *LPPER_FILE_DATA;
typedef struct _PER_FILE_DATA
{
HANDLE hFile;
HANDLE hFileMapping;
PVOID pvFile;
DWORD dwFileSize;
DWORD dwFileOffset;
DWORD dwFileMapviewUsed;
DWORD dwFileMapview;
int nFileID;
FILE_TYPE FileType;
CRITICAL_SECTION csFileData;
}PER_FILE_DATA, *LPPER_FILE_DATA;