- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ghost源码分析2013
Gohst源码分析
完成端口
CWinApp 中?InitApplication函数里面实现了窗口显示的一些功能,iocp也是在这里启动的。 只是贴上部分代码:
// 启动IOCP服务器
int nPort = m_IniFile.GetInt(_T(Settings), _T(ListenPort));
int nMaxConnection = m_IniFile.GetInt(_T(Settings), _T(MaxConnection));
if (nPort == 0)
nPort = 81;
if (nMaxConnection == 0)
nMaxConnection = 10000;
if (m_IniFile.GetInt(_T(Settings), _T(MaxConnectionAuto)))
nMaxConnection = 8000;
((CMainFrame*) m_pMainWnd)-Activate(nPort, nMaxConnection);
其中 主窗口的 Activate函数就是启动 IOCP 。
void CMainFrame::Activate(UINT nPort, UINT nMaxConnections)
{
CString str,strLogText;
if (m_iocpServer != NULL)
{
m_iocpServer-Shutdown();
delete m_iocpServer;
}
m_iocpServer = new CIOCPServer;
// 开启IPCP服务器
if (m_iocpServer-Initialize(NotifyProc, this, 100000, nPort))
{
str.Format(_T(监听端口: %d), nPort);
strLogText.Format( Gh0st Rat 2013 监听端口: [%d], nPort );
g_pLogView-AddToLog(strLogText);
}
else
{
str.Format(_T(端口%d绑定失败), nPort);
strLogText.Format( Gh0st Rat 2013 端口[%d]监听失败!, nPort );
g_pLogView-AddToLog(strLogText);
}
m_wndStatusBar.SetPaneText(2, str);
m_wndStatusBar.SetPaneText(3, _T(在线主机: 0));
}
Initialize就是初始化IOCP函数。
NotifyProc是一个重要的函数 ,接收一个完整包之后,调用这个函数处理接受的数据。
跟进Initialize函数, 创建套接字,启动一个线程 专门accept 。
线程启动成功之后,InitializeIOCP函数就是 创建完成端口的实质步骤了 。
bool CIOCPServer::Initialize(NOTIFYPROC pNotifyProc, CMainFrame* pFrame, int nMaxConnections, int nPort)
{
m_pNotifyProc = pNotifyProc; //数据包处理函数
m_pFrame = pFrame;
m_nMaxConnections = nMaxConnections;
m_socListen = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); //监听套接字
if (m_socListen == INVALID_SOCKET)
{
TRACE(_T(Could not create listen socket %ld\n),WSAGetLastError());
return false;
}
// Event for handling Network IO
m_hEvent = WSACreateEvent(); //事件
if (m_hEvent == WSA_INVALID_EVENT)
{
TRACE(_T(WSACreateEvent() error %ld\n),WSAGetLastError());
closesocket(m_socListen);
return false;
}
// The listener is ONLY interested i
您可能关注的文档
最近下载
- GXG 451-2016 信息通信建设工程费用定额 信息通信建设工程概预算编制规程.pdf VIP
- 气管插管配合操作流程.docx VIP
- 血管内超声(IVUS)光学相干断层扫描成像(OCT)培训学习讲解PPT课件.pptx VIP
- Unity 2D游戏开发实战-坦克大战.pptx VIP
- 2025中国中医科学院中医药健康产业研究所 (江西中医药健康产业研究院) 招聘事业编制人员18人考试备考试题及答案解析.docx VIP
- 2025年森林防火道路建设项目可行性研究报告.docx
- 计算机组成原理(第六版,立体化教材)(白中英,戴志涛)课后习题答案.docx VIP
- 血细胞形态学课件.pptx VIP
- 古诗词对句.doc VIP
- 《时频分析技术》课件.ppt VIP
文档评论(0)