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

📄 socketlib.h

📁 Socketlib: 一个轻量级的C++ 封装Socket C API 网络编程框架。 它简化了Socket异步事件分派、进程间Socket通信的并发OO网络应用和服务的开发。 目前
💻 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
};

//单句柄数据
class CSocketSource;
typedef struct _PER_HANDLE_DATA
{
	SOCKET		    hSocket;
	CSocketSource  *pSocketSource;  //SocketSource指针
	void		   *pAttachInfo;	//上层附加信息指针
}PER_HANDLE_DATA,*PPER_HANDLE_DATA;

//单I/O数据基础结构
typedef struct _PER_IO_OPERATION_BASE
{
	//重叠结构
	OVERLAPPED Overlapped;

	//操作类型表示
	IOCP_OPERTYPE OperType;

	//资源锁
	CRITICAL_SECTION IoLock;

	//数据缓冲区
	WSABUF SocketBuf;
}PER_IO_OPERATION_BASE,*PPER_IO_OPERATION_BASE;

//带缓冲区单句柄I/O数据
typedef struct _PER_IO_OPERATION_DATA
{
	//重叠结构
	OVERLAPPED Overlapped;

	//操作类型表示
	IOCP_OPERTYPE OperType;

	//资源锁
	//CRITICAL_SECTION IoLock;

	//数据缓冲区
	WSABUF SocketBuf;
	char   *szDataBuffer;
}PER_IO_OPERATION_DATA,*PPER_IO_OPERATION_DATA;

//单个Socket会话结构
typedef struct _SOCKET_SESSION
{
	PER_HANDLE_DATA		   PerHandle;   //单句柄数据
	PER_IO_OPERATION_DATA  PerIoRecv;   //接收(I/O)
	PER_IO_OPERATION_BASE  PerIoSend;   //发送(I/O)
}SOCKET_SESSION,*PSOCKET_SESSION;


// UDP完成端口的两个结构

//单I/O数据基础结构
typedef struct _PER_IO_OPERATION_BASE_UDP
{
	//重叠结构
	OVERLAPPED Overlapped;

	//操作类型表示
	IOCP_OPERTYPE OperType;

	//资源锁
	//CRITICAL_SECTION IoLock;

	//数据缓冲区
	WSABUF SocketBuf;
}PER_IO_OPERATION_BASE_UDP,*PPER_IO_OPERATION_BASE_UDP;

//带缓冲区单句柄I/O数据
typedef struct _PER_IO_OPERATION_DATA_UDP
{
	//重叠结构
	OVERLAPPED Overlapped;

	//操作类型表示
	IOCP_OPERTYPE OperType;

	//资源锁
	//CRITICAL_SECTION IoLock;

	//发送方地址
    SOCKADDR_IN		 addr;
    int              addrlen;

	//数据缓冲区
	WSABUF SocketBuf;
	char   *szDataBuffer;
}PER_IO_OPERATION_DATA_UDP,*PPER_IO_OPERATION_DATA_UDP;

};

⌨️ 快捷键说明

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