91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 75KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-19
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

自己準(zhǔn)備實(shí)現(xiàn)一個web服務(wù)器學(xué)習(xí)IOCP而封裝的一個框架,能適應(yīng)高并發(fā)(默認(rèn)我設(shè)置是64個)連入及多client同時在線傳輸數(shù)據(jù)(最大測試到30000).包括TCP與UDP兩種協(xié)議的IOCP封裝實(shí)現(xiàn)。比較好的解決了掉線,死機(jī),超時等socket關(guān)閉問題及WAIT_TIME問題。同時用較好方式實(shí)現(xiàn)了AcceptContext,ReceiveContext,Sendcontext的管理(自己寫了個static類),重用各種context,避免頻繁的new與delete操作.系統(tǒng)容量會隨接入用戶自動提升.框架清楚,接口已經(jīng)做好,寫web服務(wù)器是很容易的事情了。

資源截圖

代碼片段和文件信息

#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;
// closesocket(m_hSocket);
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_iOperateMode?=?SC_WAIT_ACCEPT;
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);

//此處有可能會出現(xiàn)線程同步問題
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;
}
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3915??2009-03-06?01:16??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\baseDefine.h

?????文件???????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

?????文件????????684??2009-03-10?16:05??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

?????文件????????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

?????文件???????1198??2009-03-09?01:03??IOCP_Server\IOCP_Server\UdpContext.h

?????文件??????15861??2009-03-10?10:32??IOCP_Server\IOCP_Server\UdpServer.cpp

............此處省略15個文件信息

評論

共有 條評論