定 價(jià):¥89.00
作 者: | 羅培羽 |
出版社: | 機(jī)械工業(yè)出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787111612179 | 出版時(shí)間: | 2019-01-01 | 包裝: | |
開本: | 頁數(shù): | 字?jǐn)?shù): |
前言
第1章 網(wǎng)絡(luò)游戲的開端:Echo 1
1.1 藏在幕后的服務(wù)端 1
1.2 網(wǎng)絡(luò)連接的端點(diǎn):Socket 3
1.2.1 Socket 3
1.2.2 IP地址 3
1.2.3 端口 4
1.2.4 Socket通信的流程 6
1.2.5 TCP和UDP協(xié)議 7
1.3 開始網(wǎng)絡(luò)編程:Echo 8
1.3.1 什么是Echo程序 8
1.3.2 編寫客戶端程序 8
1.3.3 客戶端代碼知識點(diǎn) 10
1.3.4 完成客戶端 11
1.3.5 創(chuàng)建服務(wù)端程序 12
1.3.6 編寫服務(wù)端程序 14
1.3.7 服務(wù)端知識點(diǎn) 15
1.3.8 測試Echo程序 15
1.4 更多API 16
1.5 公網(wǎng)和局域網(wǎng) 17
第2章 分身有術(shù):異步和多路復(fù)用 19
2.1 什么樣的代碼是異步代碼 19
2.2 異步客戶端 20
2.2.1 異步Connect 21
2.2.2 Show Me The Code 22
2.2.3 異步Receive 23
2.2.4 異步Send 26
2.3 異步服務(wù)端 29
2.3.1 管理客戶端 29
2.3.2 異步Accept 30
2.3.3 程序結(jié)構(gòu) 31
2.3.4 代碼展示 31
2.4 實(shí)踐:做個聊天室 35
2.4.1 服務(wù)端 35
2.4.2 客戶端 35
2.4.3 測試 36
2.5 狀態(tài)檢測Poll 36
2.5.1 什么是Poll 36
2.5.2 Poll客戶端 37
2.5.3 Poll服務(wù)端 38
2.6 多路復(fù)用Select 41
2.6.1 什么是多路復(fù)用 41
2.6.2 Select服務(wù)端 42
2.6.3 Select客戶端 44
第3章 實(shí)踐出真知:大亂斗游戲 45
3.1 什么是大亂斗游戲 45
3.2 搭建場景 46
3.3 角色類Human 49
3.3.1 類結(jié)構(gòu)設(shè)計(jì) 49
3.3.2 BaseHuman 49
3.3.3 角色預(yù)設(shè) 51
3.3.4 CtrlHuman 54
3.3.5 SyncHuman 57
3.4 如何使用網(wǎng)絡(luò)模塊 57
3.4.1 委托 57
3.4.2 通信協(xié)議 59
3.4.3 消息隊(duì)列 60
3.4.4 NetManager類 60
3.4.5 測試網(wǎng)絡(luò)模塊 64
3.5 進(jìn)入游戲:Enter協(xié)議 66
3.5.1 創(chuàng)建角色 67
3.5.2 接收Enter協(xié)議 70
3.5.3 測試Enter協(xié)議 70
3.6 服務(wù)端如何處理消息 72
3.6.1 反射機(jī)制 72
3.6.2 消息處理函數(shù) 73
3.6.3 事件處理 74
3.6.4 玩家數(shù)據(jù) 76
3.6.5 處理Enter協(xié)議 77
3.7 玩家列表:List協(xié)議 77
3.7.1 客戶端處理 78
3.7.2 服務(wù)端處理 79
3.7.3 測試 79
3.8 移動同步:Move協(xié)議 80
3.8.1 客戶端處理 80
3.8.2 服務(wù)端處理 81
3.8.3 測試 81
3.9 玩家離開:Leave協(xié)議 82
3.9.1 客戶端處理 82
3.9.2 服務(wù)端處理 82
3.9.3 測試 82
3.10 攻擊動作:Attack協(xié)議 83
3.10.1 播放攻擊動作 83
3.10.2 客戶端處理 87
3.10.3 服務(wù)端處理 88
3.10.4 測試 88
3.11 攻擊傷害:Hit協(xié)議 89
3.11.1 客戶端處理 89
3.11.2 服務(wù)端處理 91
3.12 角色死亡:Die協(xié)議 91
3.12.1 客戶端處理 91
3.12.2 測試 92
第4章 正確收發(fā)數(shù)據(jù)流 94
4.1 TCP數(shù)據(jù)流 94
4.1.1 系統(tǒng)緩沖區(qū) 94
4.1.2 粘包半包現(xiàn)象 96
4.1.3 人工重現(xiàn)粘包現(xiàn)象 97
4.2 解決粘包問題的方法 97
4.2.1 長度信息法 97
4.2.2 固定長度法 98
4.2.3 結(jié)束符號法 98
4.3 解決粘包的代碼實(shí)現(xiàn) 99
4.3.1 發(fā)送數(shù)據(jù) 99
4.3.2 接收數(shù)據(jù) 99
4.3.3 處理數(shù)據(jù) 101
4.3.4 完整的示例 104
4.3.5 測試程序 106
4.4 大端小端問題 109
4.4.1 為什么會有大端小端之分 110
4.4.2 使用Reverse()兼容大小端編碼 111
4.4.3 手動還原數(shù)值 111
4.5 完整發(fā)送數(shù)據(jù) 112
4.5.1 不完整發(fā)送示例 113
4.5.2 如何解決發(fā)送不完整問題 113
4.5.3 ByteArray和Queue 117
4.5.4 解決線程沖突 120
4.5.5 為什么要使用隊(duì)列 121
4.6 高效的接收數(shù)據(jù) 122
4.6.1 不足之處 122
4.6.2 完整的ByteArray 123
4.6.3 將ByteArray應(yīng)用到異步程序 129
第5章 深入了解TCP,解決暗藏問題 133
5.1 從TCP到銅線 133
5.1.1 應(yīng)用層 133
5.1.2 傳輸層 134
5.1.3 網(wǎng)絡(luò)層 135
5.1.4 網(wǎng)絡(luò)接口 135
5.2 數(shù)據(jù)傳輸流程 136
5.2.1 TCP連接的建立 136
5.2.2 TCP的數(shù)據(jù)傳輸 137
5.2.3 TCP連接的終止 138
5.3 常用TCP參數(shù) 138
5.3.1 ReceiveBufferSize 138
5.3.2 SendBufferSize 139
5.3.3 NoDelay 139
5.3.4 TTL 140
5.3.5 ReuseAddress 141
5.3.6 LingerState 142
5.4 Close的恰當(dāng)時(shí)機(jī) 144
5.5 異常處理 146
5.6 心跳機(jī)制 147
第6章 通用客戶端網(wǎng)絡(luò)模塊 148
6.1 網(wǎng)絡(luò)模塊設(shè)計(jì) 148
6.1.1 對外接口 148
6.1.2 內(nèi)部設(shè)計(jì) 149
6.2 網(wǎng)絡(luò)事件 150
6.2.1 事件類型 151
6.2.2 監(jiān)聽列表 151
6.2.3 分發(fā)事件 152
6.3 連接服務(wù)端 152
6.3.1 Connect 152
6.3.2 ConnectCallback 154
6.3.3 測試程序 155
6.4 關(guān)閉連接 156
6.4.1 isClosing? 157
6.4.2 Close 157
6.4.3 測試 158
6.5 Json協(xié)議 158
6.5.1 為什么會有協(xié)議類 158
6.5.2 使用JsonUtility 159
6.5.3 協(xié)議格式 160
6.5.4 協(xié)議文件 161
6.5.5 協(xié)議體的編碼解碼 162
6.5.6 協(xié)議名的編碼解碼 163
6.6 發(fā)送數(shù)據(jù) 165
6.6.1 Send 165
6.6.2 SendCallback 166
6.6.3 測試 167
6.7 消息