●前言
第1章網絡遊戲的開端:Echo1
1.1藏在幕後的服務端1
1.2網絡連接的端點:Socket3
1.2.1Socket3
1.2.2IP地址3
1.2.3端口4
1.2.4Socket通信的流程6
1.2.5TCP和UDP協議7
1.3開始網絡編程:Echo8
1.3.1什麼是Echo程序8
1.3.2編寫客戶端程序8
1.3.3客戶端代碼知識點10
1.3.4完成客戶端11
1.3.5創建服務端程序12
1.3.6編寫服務端程序14
1.3.7服務端知識點15
1.3.8測試Echo程序15
1.4更多API16
1.5公網和局域網17
第2章分身有術:異步和多路復用19
2.1什麼樣的代碼是異步代碼19
2.2異步客戶端20
2.2.1異步Connect21
2.2.2ShowMeTheCode22
2.2.3異步Receive23
2.2.4異步Send26
2.3異步服務端29
2.3.1管理客戶端29
2.3.2異步Accept30
2.3.3程序結構31
2.3.4代碼展示31
2.4實踐:做個聊天室35
2.4.1服務端35
2.4.2客戶端35
2.4.3測試36
2.5狀態檢測Poll36
2.5.1什麼是Poll36
2.5.2Poll客戶端37
2.5.3Poll服務端38
2.6多路復用Select41
2.6.1什麼是多路復用41
2.6.2Select服務端42
2.6.3Select客戶端44
第3章實踐出真知:大亂鬥遊戲45
3.1什麼是大亂鬥遊戲45
3.2搭建場景46
3.3角色類Human49
3.3.1類結構設計49
3.3.2BaseHuman49
3.3.3角色預設51
3.3.4CtrlHuman54
3.3.5SyncHuman57
3.4如何使用網絡模塊57
3.4.1委托57
3.4.2通信協議59
3.4.3消息隊列60
3.4.4NetManager類60
3.4.5測試網絡模塊64
3.5進入遊戲:Enter協議66
3.5.1創建角色67
3.5.2接收Enter協議70
3.5.3測試Enter協議70
3.6服務端如何處理消息72
3.6.1反射機制72
3.6.2消息處理函數73
3.6.3事件處理74
3.6.4玩家數據76
3.6.5處理Enter協議77
3.7玩家列表:List協議77
3.7.1客戶端處理78
3.7.2服務端處理79
3.7.3測試79
3.8移動同步:Move協議80
3.8.1客戶端處理80
3.8.2服務端處理81
3.8.3測試81
3.9玩家離開:Leave協議82
3.9.1客戶端處理82
3.9.2服務端處理82
3.9.3測試82
3.10攻擊動作:Attack協議83
3.10.1播放攻擊動作83
3.10.2客戶端處理87
3.10.3服務端處理88
3.10.4測試88
3.11攻擊傷害:Hit協議89
3.11.1客戶端處理89
3.11.2服務端處理91
3.12角色死亡:Die協議91
3.12.1客戶端處理91
3.12.2測試92
第4章正確收發數據流94
4.1TCP數據流94
4.1.1繫統緩衝區94
4.1.2粘包半包現像96
4.1.3人工重現粘包現像97
4.2解決粘包問題的方法97
4.2.1長度信息法97
4.2.2固定長度法98
4.2.3結束符號法98
4.3解決粘包的代碼實現99
4.3.1發送數據99
4.3.2接收數據99
4.3.3處理數據101
4.3.4完整的示例104
4.3.5測試程序106
4.4大端小端問題109
4.4.1為什麼會有大端小端之分110
4.4.2使用Reverse()兼容大小端編碼111
4.4.3手動還原數值111
4.5完整發送數據112
4.5.1不完整發送示例113
4.5.2如何解決發送不完整問題113
4.5.3ByteArray和Queue117
4.5.4解決線程衝突120
4.5.5為什麼要使用隊列121
4.6高效的接收數據122
4.6.1不足之處122
4.6.2完整的ByteArray123
4.6.3將ByteArray應用到異步程序129
第5章深入了解TCP,解決暗藏問題133
5.1從TCP到銅線133
5.1.1應用層133
5.1.2傳輸層134
5.1.3網絡層135
5.1.4網絡接口135
5.2數據傳輸流程136
5.2.1TCP連接的建立136
5.2.2TCP的數據傳輸137
5.2.3TCP連接的終止138
5.3常用TCP參數138
5.3.1ReceiveBufferSize138
5.3.2SendBufferSize139
5.3.3NoDelay139
5.3.4TTL140
5.3.5ReuseAddress141
5.3.6LingerState142
5.4Close的恰當時機144
5.5異常處理146
5.6心跳機制147
第6章通用客戶端網絡模塊148
6.1網絡模塊設計148
6.1.1對外接口148
6.1.2內部設計149
6.2網絡事件150
6.2.1事件類型151
6.2.2監聽列表151
6.2.3分發事件152
6.3連接服務端152
6.3.1Connect152
6.3.2ConnectCallback154
6.3.3測試程序155
6.4關閉連接156
6.4.1isClosing?157
6.4.2Close157
6.4.3測試158
6.5Json協議158
6.5.1為什麼會有協議類158
6.5.2使用JsonUtility159
6.5.3協議格式160
6.5.4協議文件161
6.5.5協議體的編碼解碼162
6.5.6協議名的編碼解碼163
6.6發送數據165
6.6.1Send165
6.6.2SendCallback166
6.6.3測試167
……