傳奇源碼分析---框架

最近看遊戲源碼,對於大一點的源碼,徹底不知道怎麼開始,太龐大了,網狐的源碼都達到了1G多了,vc6.0打開直接卡死,不得不說vs2010仍是很不錯的。大的源碼看不懂,最後去看最小的源碼,傳奇服務端源碼。編程

1.找到winmain函數(GameSvr.cpp)InitApplication()函數註冊窗口回調函數MainWndProc(MainWndProc.cpp). InitInstance()函數主要對窗口編程。服務器

2.開啓服務     回調函數調用OnCommand(),建立了一個線程InitializingServer;在線程裏面調用ConnectToServer()函數。ConnectToServer()裏面將監聽套接字(沒看全局變量,推測的)註冊到窗口回調函數裏面,消息的ID爲:_IDM_CLIENTSOCK_MSG而後,本身鏈接這個服務器,到此ConnectToServer()函數結束。架構

3.因爲上一步,收到了_IDM_CLIENTSOCK_MSG,窗口函數調用OnClientSockMsg()。這個函數裏面建立了ProcessLoginProcessUserHumanProcessMonsterProcessNPC線程,而後經過調用InitServerSocket建立CreateIOCPWorkerThread成端口。繼續調用InitThread建立AcceptThread線程,OK到此程序基本框架搭建起來了。CreateIOCPWorkerThread裏面建立了完成端口工做者線程ServerWorkerThread框架

到此服務器的基本架構搭建起來了。函數

直接看圖吧,思路清晰一些。spa

相關文章
相關標籤/搜索