?? socketlib.h
字號:
//**********************************************************************
//
// Copyright (C) 2005-2007 Zhang bao yuan(bolidezhang@gmail.com).
// All rights reserved.
//
// This copy of Socketlib is licensed to you under the terms described
// in the LICENSE.txt file included in this distribution.
//
//**********************************************************************
#pragma once
#include "config.h"
namespace SL
{
#define DEFAULT_BUFFER_SIZE 8192
#define RECV_BUFFER_SIZE 8192
#define SEND_BUFFER_SIZE 8192
#define MAX_SOCKET_CONNECTNUM 500000
#define MAX_SOCKET_FREENUM 500000
#define MAX_LOGBUFFER_LENGTH 1024
//IPV4地址的最大長度,如192.168.128.210
#define MAX_IPADDR_LENGTH 15
enum IOCP_OPERTYPE
{
RECV_POSTED = 1,
SEND_POSTED = 2,
ACCEPT_POSTED = 3
};
//單句柄數(shù)據(jù)
class CSocketSource;
typedef struct _PER_HANDLE_DATA
{
SOCKET hSocket;
CSocketSource *pSocketSource; //SocketSource指針
void *pAttachInfo; //上層附加信息指針
}PER_HANDLE_DATA,*PPER_HANDLE_DATA;
//單I/O數(shù)據(jù)基礎結(jié)構(gòu)
typedef struct _PER_IO_OPERATION_BASE
{
//重疊結(jié)構(gòu)
OVERLAPPED Overlapped;
//操作類型表示
IOCP_OPERTYPE OperType;
//資源鎖
CRITICAL_SECTION IoLock;
//數(shù)據(jù)緩沖區(qū)
WSABUF SocketBuf;
}PER_IO_OPERATION_BASE,*PPER_IO_OPERATION_BASE;
//帶緩沖區(qū)單句柄I/O數(shù)據(jù)
typedef struct _PER_IO_OPERATION_DATA
{
//重疊結(jié)構(gòu)
OVERLAPPED Overlapped;
//操作類型表示
IOCP_OPERTYPE OperType;
//資源鎖
//CRITICAL_SECTION IoLock;
//數(shù)據(jù)緩沖區(qū)
WSABUF SocketBuf;
char *szDataBuffer;
}PER_IO_OPERATION_DATA,*PPER_IO_OPERATION_DATA;
//單個Socket會話結(jié)構(gòu)
typedef struct _SOCKET_SESSION
{
PER_HANDLE_DATA PerHandle; //單句柄數(shù)據(jù)
PER_IO_OPERATION_DATA PerIoRecv; //接收(I/O)
PER_IO_OPERATION_BASE PerIoSend; //發(fā)送(I/O)
}SOCKET_SESSION,*PSOCKET_SESSION;
// UDP完成端口的兩個結(jié)構(gòu)
//單I/O數(shù)據(jù)基礎結(jié)構(gòu)
typedef struct _PER_IO_OPERATION_BASE_UDP
{
//重疊結(jié)構(gòu)
OVERLAPPED Overlapped;
//操作類型表示
IOCP_OPERTYPE OperType;
//資源鎖
//CRITICAL_SECTION IoLock;
//數(shù)據(jù)緩沖區(qū)
WSABUF SocketBuf;
}PER_IO_OPERATION_BASE_UDP,*PPER_IO_OPERATION_BASE_UDP;
//帶緩沖區(qū)單句柄I/O數(shù)據(jù)
typedef struct _PER_IO_OPERATION_DATA_UDP
{
//重疊結(jié)構(gòu)
OVERLAPPED Overlapped;
//操作類型表示
IOCP_OPERTYPE OperType;
//資源鎖
//CRITICAL_SECTION IoLock;
//發(fā)送方地址
SOCKADDR_IN addr;
int addrlen;
//數(shù)據(jù)緩沖區(qū)
WSABUF SocketBuf;
char *szDataBuffer;
}PER_IO_OPERATION_DATA_UDP,*PPER_IO_OPERATION_DATA_UDP;
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -