最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

WoW 游戲軟件

2023-05-18 17:29 作者:玟玟的大寶貝  | 我要投稿

訪問(wèn)【W(wǎng)RITE-BUG數(shù)字空間】_[內(nèi)附完整源碼和文檔]

我們選擇Tcp協(xié)議進(jìn)行傳輸,之所以采用tcp,首先是因?yàn)閠cp傳輸穩(wěn)定,相比于udp不穩(wěn)定的傳輸,tcp能確保消息一定傳輸出去。然后是tcp有服務(wù)器,相比于 p2p 無(wú)服務(wù)器模型,tcp 可以記錄數(shù)據(jù),方便用于商用而且也比較安全。

主要設(shè)計(jì)思路:

我們選擇Tcp協(xié)議進(jìn)行傳輸,之所以采用tcp,首先是因?yàn)閠cp傳輸穩(wěn)定,相比于udp不穩(wěn)定的傳輸,tcp能確保消息一定傳輸出去。然后是tcp有服務(wù)器,相比于 p2p 無(wú)服務(wù)器模型,tcp 可以記錄數(shù)據(jù),方便用于商用而且也比較安全。

客戶端主要設(shè)計(jì)思路:

基于TCP協(xié)議,實(shí)現(xiàn)發(fā)送消息給服務(wù)器和從服務(wù)器接收消息。要實(shí)現(xiàn)“迷你魔獸世界” 客戶端的基本框架主要分為以下幾個(gè)部分:

指令,根據(jù)輸入的指令,比如login,move,attack等,客戶端要判斷指令的有效 指令設(shè)計(jì),輸入指令login playername,客戶端向服務(wù)器發(fā)送登錄請(qǐng)求,輸入指令move direction,客戶端向服務(wù)器發(fā)送移動(dòng)請(qǐng)求,輸入指令attcak playername,客戶端發(fā)送攻擊另一位玩家的請(qǐng)求,輸入指令speak message,表示該玩家要發(fā)言,內(nèi)容為message,同樣要向服務(wù)器發(fā)送請(qǐng)求,輸入指令logout,表示退出登陸。

無(wú)效指令,如果輸入的不是約定好的指令以及指令結(jié)構(gòu)不正確,則客戶端不向服務(wù)器發(fā)送請(qǐng)求。第一,登陸時(shí)玩家名不能有空格;第二,move指令后面的方向必須在north,south, west和east這幾個(gè)方向中,如果為其他內(nèi)容,則輸出無(wú)效的方向的提示;第三,輸入attack 指令后要判斷被攻擊玩家是否在該玩家視野范圍內(nèi),如果不在視野范圍內(nèi),則輸出錯(cuò)誤信息 “The target is not visible”,玩家視野范圍為(x-5,x+5),(y-5,y+5),x和y為玩家坐標(biāo);第四,speak生成的數(shù)據(jù)中可以有空格;第五,logout指令,沒(méi)有參數(shù)。

發(fā)送請(qǐng)求,根據(jù)輸入的有效指令得到消息類型和消息內(nèi)容,按照協(xié)議打包成字節(jié)發(fā)送給服務(wù)器。

處理應(yīng)答,客戶端接收到來(lái)自服務(wù)器的包,根據(jù)協(xié)議,先解析出消息類型,再根據(jù)不同消息類型的包的結(jié)構(gòu)解析出包中的數(shù)據(jù),再根據(jù)這些數(shù)據(jù)輸出消息。

線程問(wèn)題,客戶端必須和服務(wù)器端進(jìn)行異步通信。例如,當(dāng)其他玩家生成一個(gè) speak 命令,客戶端將會(huì)收到SPEAK_NOTIFY 信息從服務(wù)器端,盡管客戶端沒(méi)有請(qǐng)求這個(gè)消息。這意味著客戶端不能阻塞用戶的輸入。所以將輸入指令發(fā)送請(qǐng)求和接收廣播/應(yīng)答的函數(shù)設(shè)為兩個(gè)線程,其中一個(gè)通過(guò)一個(gè)死循環(huán),輸入指令并處理,另一個(gè)也是通過(guò)死循環(huán)不停接收廣播/應(yīng)答并處理。

異常處理,當(dāng)遇到一些特殊情況時(shí)需要做異常處理。

如果服務(wù)器端不可用并且連接不能生成,客服端必須退出,且顯示錯(cuò)誤信息”The gate to the tiny world of warcraft is not ready.”。要實(shí)現(xiàn)這一點(diǎn),需要通過(guò)try/except 連接地址和端口號(hào)的時(shí)候檢測(cè)異常。

如果客戶端從服務(wù)器端收到一個(gè)異常消息,客戶端必須退出,然后輸出錯(cuò)誤消息”Meteor is striking the world.”。即如果客戶端收到的包的長(zhǎng)度不符合規(guī)范,或者解析到的消息類型不存在或與包的長(zhǎng)度不匹配,說(shuō)明客戶端收到了一個(gè)異常消息。

如果客戶端和服務(wù)器端的連接被異常中斷,客服端必須退出,然后顯示一個(gè)錯(cuò)誤消息”The gate to the tiny world of warcraft has disappeared.”。由于python中的套接字?jǐn)嚅_(kāi)連接時(shí)不會(huì)出現(xiàn)異常,而是會(huì)不斷接收到空字符,所以在接收消息的地方做一個(gè)判斷,如果接收到的消息長(zhǎng)度為0,說(shuō)明連接斷開(kāi),則執(zhí)行該異常處理。


WoW 游戲軟件的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
庐江县| 全南县| 长治市| 新宾| 德昌县| 闽侯县| 沂水县| 汉川市| 郑州市| 邹平县| 宾阳县| 麻城市| 六枝特区| 四子王旗| 安顺市| 河北省| 溧水县| 那曲县| 铜川市| 湘潭县| 枣庄市| 隆化县| 盐山县| 定襄县| 花垣县| 星座| 绍兴县| 奉新县| 临洮县| 宾川县| 天全县| 即墨市| 翁源县| 广南县| 辽中县| 洪江市| 平利县| 连江县| 承德市| 靖安县| 乾安县|