際際滷

際際滷Share a Scribd company logo
EasyGameServer
Source 谿 by sm9
覓伎 覲手?
  豢豌 : https://github.com/zeliard/EasyGameServer
 豈 訖れ朱 覯螳 企至 讌 襴襯 覲碁
 譴  譯朱 覲伎
1. EasyServer.cpp (_tmain 1/4 )
覲 
g_AcceptedSocket
Exception 覦覃
ExceptionFilter 
ClientManager
DatabaseMager 豐蠍壱
WSDATA 豐蠍壱
ListenSocket
1. EasyServer.cpp (_tmain 2/4 )
旧 蟆一
ListenSocket
Bind
ListenSocket
Listen
EventHandle
1. EasyServer.cpp (_tmain 3/4 )
る襯 
ClientHandlingThread
襯 ろ.
SUSPENDED 
DB Thread 
SUSPENDED 
 覲襦 誤
貅 accept 
Blocking 企襦 蠍
Queue connectio
伎 願.
Accept 覃 Thread
Security 語 signal
 譴 ろ
1. EasyServer.cpp (_tmain 4/4 )
覯螳 譬襭蠍  豪  伎
 WSACleanup() 企.
1. EasyServer.cpp
(ClientHandlingThread 1/2 )
WaitableTimer襯 燕.
 Thread 10 覦襴豐襷 TimeProc
 企┯襯 れ蟆 .
 覯讌 語 豕豐 蠍 螳企.
100 nanosecond 企.
 覯讌 語 Timer 譯手鍵襯 碁.
millisecond 企.
1. EasyServer.cpp
(ClientHandlingThread 2/2 )
WaitForSingleObjectEx  襷讌襷 語螳 true
企襦 APC  覘螳 豢螳覃(郁屋 覃) 語
蠏碁讌 朱 蠍 螳 覓危企
WaifForSingleObjectEx 覦螳 WAIT_OBJECT_0
朱 signaled 朱 詞企.
企 ClientManager 襦 ClientSession 襷.
g_AcceptedSocket 讌蠍 郁屋 client 貅 覲企ゼ
願 朱襦 session 覲襦 螻 貅 譴  .
ClientSession 焔る 郁屋 豌襴(OnConnect())
1. EasyServer.cpp (TimeProc)
  ClientManager蟆 譯手鍵朱  殊
.
TimeProc 語 企┯螳 10 覦襴豐 譯手鍵襯
螳讌蠍 覓語 OnPeriodWork()  10 覦襴豐
譯手鍵襦 語.
1. EasyServer.cpp
(DatabaseHandlingThread)
DatabaseManager蟆 DB  .
DB 覿覿 誤 覿讌  企.
EasyGameServer DB 豢レ 蠏碁蟆 襷讌 .
螳覦覃伎 覃 豢螳襦 DB 覿覿 覲企襦 .
2. ClientManager (CreateClient)
Singleton
襦 郁屋 朱 CreateClient
襯 覿襯願 貅 覲企ゼ 
ClientSession 焔螻 覃
List 襦 願  mClientList
ロ.
危覿
Main ClientManager襯 牛
ClientSession 殊 .
2. ClientManager (BroadcastPacket)
ClientSession 豌企ゼ 覃伎
血 覦″.
豈 覯  
螳螳 企殊伎誤語蟆 襯
譴螻.
2. ClientManager (BroadcastPacket)
GetTickCount()襦 ろ 螳 覦
伎 誤 螳螻 1豐 伎 谿企覃
1豐襷  朱れ .
CollectGarbageSession()
郁屋 伎 語 襴螻,
ClientPeriodWork()
螳螳 Client 襷 殊 .
2. ClientManager
(CollectGarbageSessions)
ClientSession 覿 覃伎
旧 螻 觜蠍 I/O譴 
語れ vector 覈.
企蟆 覈 ClientSession
螻 socket覲企 蟲覿覩襦
郁屋 螻 List .
2. ClientManager (ClientPeriodWork)
蟆 ClientSession 襴ろ碁ゼ 覃伎
覿 OnTick() ろる 
譯手鍵朱  殊 OnTick() l企覃
ClientPeriodWork() 覿 ろ
2. ClientManager (FlushClientSend)
ClientSession List襯 覃伎 SendFlush()
襯 ろる, 覯殊  一危磯ゼ
″ .
蠍一 ろ覃 郁屋 伎 蟆企.
3. ClientSession (OnConnect)
貅 觚轟朱 覦蠑語 朱 覯 豌願 觚襦   .
Nagle 螻襴讀 覃 覯 覿 企讌襷 れ螳煙 讌. 豈 覯企襦 .
覦襦 PostRecv() 襦 伎伎.
3. ClientSession (PostRecv)
mRecvBuffer Circular Buffer.
るゼ 伎企慨覃 覯朱ゼ  螳
覿覿朱   蟲豌危
覈 讌覃 覦襦 一()
WSARecv  郁屋 貅
 一危磯ゼ 覦.
觜蠍 豢レ 螳ロ.
WSABUF 螳 ル覃, 
螳 覯朱ゼ 讌  .
RecvCompletion Callback螳
焔 .
3. ClientSession (RecvCompletion)
一危 所鍵螳 覃
OnRead() 襦 襴螻
れ PostRecv()襦 螳
3. ClientSession (OnRead 1/2)
RecvBuffer Client
覦 一危郁 れ伎.
 一危磯 血企襦 曙
 る 覲企ゼ 牛 ′
襦 讌 誤  .
襦 血 覦る 螻
讌.
3. ClientSession (OnRead 2/2)
 type 磯 るジ 豌襴襯  譴
襦蠏語 血企 DB 螳 企.
豈 血企 BroadCast 譴觜襯 .
血 覲企 伎伎 id, 企, 豈
伎 血 願 覦″.
讌蠍  譬襯  覦 朱襦 
語 襦 螳譯狩.
3. ClientSession (SendRequest)
Broadcast襯 ろ覃 ClientSessionれ
SendRequest 襯 ろ.
SendRequest 豌企 覯 覯殊襷
 覲企ゼ 磯 螻殊企.
ClientManager 企蟆 ClientSession
覯殊 ル 血 ″朱 Flush
ClientSend 螳 .  
Manager 譯手鍵朱 覿れる襦
 結る 譯手鍵朱 °.
3. ClientSession (SendFlush)
PostRecv 蟇一 螳 蟲譟磯.
る WSASend 襯 磯襦
貅朱 一危磯ゼ 覲企碁る 
豢レ 螻 CallBack 襦
SendCompletion 語 
るゴ
3. ClientSession (SendFlush)
觜蠍 I/O 豺伎危磯ゼ  譴願 OnWriteComplete 襯 覿襯企 蟆   覲語企
3. ClientSession (OnWriteComplete)
 襭 一危磯ゼ 覯殊 企企 殊 .
!
 襾語 れ?
 豈 伎語 蠍磯レ 蟲る 覲瑚鴬朱 譴伎
 麹 DB 磯 覿覿 貂襴 譬 煙 ロ螻 伎 朱 
蠍 狩讌襷 豈 蟆蟾讌 れ願覃  覿覿 覺 
 蠏 
 Windows ろ 襦蠏碁覦 譬  覺手
 MSDN

More Related Content

Easy gameserver