ghost源码分析2013.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档