资源简介
本代码为一个高并发量IOCP服务端模型,IOCP(I/O Completion Port),常称I/O完成端口。 IOCP模型属于一种通讯模型,适用于能控制并发执行的高负载服务器的一个技术。 通俗一点说,就是用于高效处理很多很多的客户端进行数据交换的一个模型。或者可以说,就是能异步I/O操作的模型。
代码片段和文件信息
#include “StdAfx.h“
#include “.\acceptcontext.h“
#include “baseDefine.h“
bool CAcceptContext::m_bInitialized = false;
CRITICAL_SECTION CAcceptContext::m_struCriSec = {0};
CContextStack* CAcceptContext::m_pAcceptContextStack = NULL;
CContextStack* CAcceptContext::m_pAcceptContextManageStack = NULL;
CAcceptContext::CAcceptContext(int opModeSOCKET listenSocketSOCKET clientSocket)
{
m_iOperateMode = opMode;
m_struListenSocket = listenSocket;
m_hSocket = clientSocket;
ZeroMemory(&m_struOperateOlsizeof(WSAOVERLAPPED));
ZeroMemory(m_ucAddressbufACCEPT_ADDRESS_LENGTH*2);
}
CAcceptContext::~CAcceptContext(void)
{
m_iOperateMode = SC_WAIT_ACCEPT;
m_struListenSocket = NULL;
m_hSocket = NULL;
ZeroMemory(&m_struOperateOlsizeof(WSAOVERLAPPED));
ZeroMemory(m_ucAddressbufACCEPT_ADDRESS_LENGTH*2);
}
void CAcceptContext::SetAcceptParameters(SOCKET listenSocketSOCKET clientSocket)
{
m_struListenSocket = listenSocket;
m_hSocket = clientSocket;
}
void CAcceptContext::ResetContext()
{
m_struListenSocket = NULL;
m_hSocket = NULL;
ZeroMemory(&m_struOperateOlsizeof(WSAOVERLAPPED));
ZeroMemory(m_ucAddressbufACCEPT_ADDRESS_LENGTH*2);
}
void CAcceptContext::InitContextPool(long poolSize/* = DEFAULT_ACCEPT_CONTEXT_POOL*/)
{
if(m_bInitialized)
return ;
m_pAcceptContextStack = new CContextStack();
m_pAcceptContextManageStack = new CContextStack();
if(m_pAcceptContextStack == NULL)
return ;
InitializeCriticalSection(&m_struCriSec);
CAcceptContext* pContext = NULL;
for(int i=0;i {
pContext = new CAcceptContext(SC_WAIT_ACCEPTNULLNULL);
if(pContext)
{
m_pAcceptContextStack->Push(pContext);//链接对象入栈
m_pAcceptContextManageStack->Push(pContext);
pContext->m_iContextIndex = m_pAcceptContextManageStack->Size();
}
}
m_bInitialized = true;
}
CAcceptContext* CAcceptContext::GetContext()
{
if(!m_bInitialized)
return 0;
CAcceptContext* pContext = NULL;
EnterCriticalSection(&m_struCriSec);
if(!m_pAcceptContextStack->IsEmpty())
{
pContext = (CAcceptContext*)m_pAcceptContextStack->Pop();
}
else
{
pContext = new CAcceptContext(SC_WAIT_ACCEPTNULLNULL);
pContext->m_iContextIndex = m_pAcceptContextManageStack->Size();
m_pAcceptContextManageStack->Push(pContext);
}
LeaveCriticalSection(&m_struCriSec);
//此处有可能会出现线程同步问题
return pContext;
}
void CAcceptContext::ReleaseContext()
{
if(this)
{
EnterCriticalSection(&m_struCriSec);
m_pAcceptContextStack->Push(this);
LeaveCriticalSection(&m_struCriSec);
}
}
//销毁整个链接池context
void CAcceptContext::DestroyContextPool()
{
CAcceptContext* pContext = NULL;
int size = m_pAcceptContextStack->Size();
for(int i=0;i {
pContext = (CAcceptContext*)m_pAcceptContextManageStack->Pop();
if(pContext)
{
delete pContext;
pContext = NULL;
}
}
DeleteCriticalSection(&m_struCriSec);
delete m_pAcceptContextSt
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3847 2018-03-24 15:22 IOCP_Server\IOCP_Server\AcceptContext.cpp
文件 1225 2009-03-05 14:41 IOCP_Server\IOCP_Server\AcceptContext.h
文件 1088 2009-03-07 11:30 IOCP_Server\IOCP_Server\ba
文件 1181 2009-03-05 14:41 IOCP_Server\IOCP_Server\ContextStack.cpp
文件 544 2009-03-07 10:37 IOCP_Server\IOCP_Server\ContextStack.h
文件 17540 2009-02-25 17:00 IOCP_Server\IOCP_Server\IOCP_Server.aps
文件 373 2018-03-24 15:23 IOCP_Server\IOCP_Server\IOCP_Server.cpp
文件 1282 2009-02-25 17:00 IOCP_Server\IOCP_Server\IOCP_Server.rc
文件 5450 2009-03-03 09:34 IOCP_Server\IOCP_Server\IOCP_Server.vcproj
文件 277 2009-03-10 10:32 IOCP_Server\IOCP_Server\IOCP_Server.vcproj.vspscc
文件 6242 2018-03-24 15:21 IOCP_Server\IOCP_Server\IOCP_Server.vcxproj
文件 3605 2018-03-24 15:21 IOCP_Server\IOCP_Server\IOCP_Server.vcxproj.filters
文件 409 2009-03-10 17:30 IOCP_Server\IOCP_Server\MemoryBlock.cpp
文件 437 2009-03-10 17:31 IOCP_Server\IOCP_Server\MemoryBlock.h
文件 177 2009-03-10 10:32 IOCP_Server\IOCP_Server\mssccprj.scc
文件 398 2009-03-05 14:41 IOCP_Server\IOCP_Server\OperateContext.cpp
文件 792 2009-03-05 14:41 IOCP_Server\IOCP_Server\OperateContext.h
文件 1015 2009-02-18 22:18 IOCP_Server\IOCP_Server\ReadMe.txt
文件 390 2009-02-25 17:00 IOCP_Server\IOCP_Server\resource.h
文件 215 2009-02-18 22:18 IOCP_Server\IOCP_Server\stdafx.cpp
文件 195 2009-02-18 22:18 IOCP_Server\IOCP_Server\stdafx.h
文件 4303 2009-03-10 17:30 IOCP_Server\IOCP_Server\TcpReceiveContext.cpp
文件 1264 2009-03-06 15:24 IOCP_Server\IOCP_Server\TcpReceiveContext.h
文件 4148 2009-03-11 14:27 IOCP_Server\IOCP_Server\TcpSendContext.cpp
文件 1248 2009-03-11 14:21 IOCP_Server\IOCP_Server\TcpSendContext.h
文件 28228 2009-03-11 14:58 IOCP_Server\IOCP_Server\TcpServer.cpp
文件 2716 2009-03-10 14:28 IOCP_Server\IOCP_Server\TcpServer.h
文件 347 2009-03-07 10:51 IOCP_Server\IOCP_Server\TcpSrvException.cpp
文件 645 2009-03-07 10:50 IOCP_Server\IOCP_Server\TcpSrvException.h
文件 4441 2009-03-07 14:45 IOCP_Server\IOCP_Server\UdpContext.cpp
............此处省略20个文件信息
相关资源
- iocp_file文件传输
- Linux网络编程-网络基础-socket编程-高并
- 黑马_Linux网络编程-网络基础-socket编程
- iocp服务器代码_tct&udp;测试工具
- Visual Studio 实现TCp socket 异步通信,客
- Spring RabbitMQ实现案例抢红包高并发
- Redis 深度历险:核心原理与应用实践
- springboot rabbitmq 模拟高并发秒杀系统
- IOCP学习客户端代码
- 功能强大的IOCP Socket Servre模块例程源
- openssl 结合 IOCP的
- 高并发常见面试题(深入底层).doc
- IOCPExample_By_PiggyXP 完成端口
- IOCP 客户端和服务端
- 分布式高并发上传设计思路图
- 实现了IOCP完成端口模型的服务器设计
- IOCP_API(2.4)
- IOCP_API最新版(2008/11/15)
- 高并发秒杀视频实战讲解百度云
- 大规模高性能分布式存储系统设计与
- 可以承载20k并发量的IOCP
- 博客文章《完成端口详解》配套代码
- IOCP服务器、客户端终极网络聊天室代
- 公认不错的IOCP封装类
- 基于IOCP的文件传输
- UDP 高并发的实现
- IOCP作为服务器实现P2P_UDP通信
- 使用完成端口实现IOCP服务器端框架,
- springboot webscoket 实现群聊,点对点聊
- Linux下基于epoll_线程池高并发服务器实
评论
共有 条评论