Gh0st启动流程

仅是笔记,存在错误,并未写完,请勿阅读,谢谢

1、CGh0stApp–>Initlnstance()
1)配置界面信息及其他
2)从.ini文件中读取监听端口ListenPort和最大连接数MaxConnection,并做相应的调整
3)调用((CMainFrame*) m_pMainWnd)->Activate(nPort, nMaxConnection)去激活服务器,(跳到2)

2、CMainFrame–>Activate(UINT nPort, UINT nMaxConnections)
0)1来
1)检查是否存在m_iocpServer,如果有的话,shutdown一下
(程序刚启动,一般是没有,这里停一下,不跟进,跟进到13)
2)m_iocpServer新建对象,调用CIOCPServer的构造函数(跟进,到3)
3)开启服务器,调用函数
m_iocpServer->Initialize(NotifyProc, this, 100000, nPort)(跟进到4)
4)获得主机名,通过主机名获得ip,并设置状态栏显示数据
5)返回到1

3、CIOCPServer–>CIOCPServer()
0)2来
1)初始化套接字版本wsaData
2)初始化一个临界区变量m_cs
3)初始化15个iocpserver的变量,
4)定义包标志bPacketFlag
5)返回到2

4、CIOCPServer–>Initialize(NotifyProc, this, 100000, nPort)
0)2来
1)存下三个参数
2)创建套接口m_socListen = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED);
3)创建网络事件m_hEvent = WSACreateEvent()
4)将FD_ACCEPT事件关联到套接口上
nRet = WSAEventSelect(m_socListen,m_hEvent,FD_ACCEPT);
5)配置SOCKADDR_IN地址
6)绑定套接头nRet = bind(m_socListen,(LPSOCKADDR)&saServer,sizeof(struct sockaddr));
7)监听端口nRet = listen(m_socListen, SOMAXCONN);
8)开启监听线程
m_hThread =(HANDLE)_beginthreadex(NULL,0,ListenThreadProc,(void*) this,0,&dwThreadId);
9)跟进看一下这个监听线程都干了啥(跟进到5)
A)初始化完成端口InitializeIOCP();(MD,数字太多,把我弄混了,居然把这个给漏了)(跳到20)
B)返回2

5、CIOCPServer.–>ListenThreadProc(LPVOID lParam)
0)4来
1)无限while循环
2)等待m_hKillEvent受信就跳出循环
WaitForSingleObject(pThis->m_hKillEvent, 100) == WAIT_OBJECT_0
3)插一句,受信是在CIOCPServer::stop中SetEvent(m_hKillEvent),
就是在stop掉server的时候受信
4)等待事件的发生,没有发生就阻塞在这里
dwRet = WSAWaitForMultipleEvents(1,&pThis->m_hEvent,FALSE,100,FALSE);
5)如果超时,继续while循环
6)查看事件是什么事件
int nRet = WSAEnumNetworkEvents(pThis->m_socListen,pThis->m_hEvent,&events);
7)如果error的话就跳出while循环
8)如果事件是FD_ACCEPT的话,表示有连接到来调用CIOCPSserver::OnAccept()(跟进到6)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值