freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

游戲服務(wù)器架構(gòu)(更新版)

  

【正文】 另外對(duì)于大多數(shù)服務(wù)器程序來(lái)說(shuō),在運(yùn)行時(shí)都是作為精靈進(jìn)程或服務(wù)進(jìn)程的,所以我們并不需要服務(wù)器能夠處理控制臺(tái)用戶輸入,我們所要處理的數(shù)據(jù)來(lái)源都來(lái)自網(wǎng)絡(luò)。如果我們使用windows平臺(tái),那IOCP將是首選;如果是linux,epool將是不二選擇。由于我在讀技術(shù)文章時(shí)最不喜看到的就是大段大段的代碼,特別是那些直接Ctrl+C再Ctrl+V后未做任何修改的代碼,用句時(shí)髦的話說(shuō),一點(diǎn)技術(shù)含量都沒(méi)有!所以在我們今后所要討論的內(nèi)容中,盡量會(huì)避免出現(xiàn)直接的代碼,在有些地方確實(shí)需要代碼來(lái)表述時(shí),也將會(huì)選擇使用偽碼。這個(gè)列表的狀態(tài)要定時(shí)刷新,可能有新的游戲世界開(kāi)放了,也可能有些游戲世界非常不幸地停止運(yùn)轉(zhuǎn)了,這些狀態(tài)的變化都要盡可能及時(shí)地讓玩家知道。嗯,這個(gè)問(wèn)題好解決,我們不要用固定的算法進(jìn)行散列就是了。這個(gè)方法存在的安全隱患實(shí)在太大,明文的密碼傳輸太容易被截獲了。而實(shí)際上,一個(gè)socket描述符在windows上的定義是unsigned int,因此要有限制那也是四十多億,放心好了。當(dāng)然,如果已有了成熟的可靠UDP庫(kù),那也可以繼續(xù)使用著。我們?cè)谇懊嫣接懥艘恍┰诂F(xiàn)在的游戲中見(jiàn)到過(guò)的結(jié)構(gòu),并盡我所知地分析了各自存在的一些問(wèn)題和可以做的一些改進(jìn),希望其中沒(méi)有謬誤,如果能給大家也帶來(lái)些啟發(fā)那自然更好?,F(xiàn)實(shí)中有警察來(lái)維護(hù)秩序,游戲中也如此,這就是我們常說(shuō)的GM。然后,我們可以試著把一些與地圖數(shù)據(jù)無(wú)關(guān)的公共邏輯放到Master Server上去實(shí)現(xiàn),這樣Zone Server上只保留了與地圖數(shù)據(jù)緊密相關(guān)的邏輯,如生物管理,玩家移動(dòng)和狀態(tài)更新等。既然想要更多的連接數(shù),那就再加一臺(tái)網(wǎng)關(guān)服務(wù)器吧。繼續(xù)我們的結(jié)構(gòu)討論。但我們所遇到的事實(shí)是,服務(wù)器收到一個(gè)移動(dòng)包后,要向周?chē)腥藦V播,而不是echo服務(wù)器那樣簡(jiǎn)單的回應(yīng);服務(wù)器在收到一個(gè)連接斷開(kāi)通知時(shí)要向很多人通知玩家退出事件,并將該玩家的資料寫(xiě)入數(shù)據(jù)庫(kù),而不是echo服務(wù)器那樣什么都不需要做;服務(wù)器在收到一個(gè)物品使用請(qǐng)求包后要做一系列的邏輯判斷以檢查玩家有沒(méi)有作弊;服務(wù)器上還啟動(dòng)著很多定時(shí)器用來(lái)更新游戲世界的各種狀態(tài)......其實(shí)這么一比較,我們也看出資源消耗的所在了:服務(wù)器上大量的復(fù)雜的邏輯處理。很完美的解決方案,不是嗎?這種結(jié)構(gòu)在實(shí)際的部署中也遇到了一些挑戰(zhàn)。中心服務(wù)器主要維護(hù)一張地圖ID到地圖服務(wù)器地址的映射表。既然如此,我們就把每塊地圖都當(dāng)作是一臺(tái)獨(dú)立的服務(wù)器,他提供了在這塊地圖上游戲時(shí)的所有邏輯功能,至于內(nèi)部結(jié)構(gòu)如何劃分我們暫不理會(huì),先把他當(dāng)作一個(gè)黑盒子吧。服務(wù)器結(jié)構(gòu)探討簡(jiǎn)單的世界服實(shí)現(xiàn)討論了這么久我們一直都還沒(méi)有進(jìn)入游戲世界服務(wù)器內(nèi)部,現(xiàn)在就讓我們來(lái)窺探一下里面的結(jié)構(gòu)吧。但是對(duì)于不同的游戲世界來(lái)說(shuō),其角色及游戲內(nèi)數(shù)據(jù)都是互相獨(dú)立的,所以一般情況下也就為每個(gè)游戲世界單獨(dú)配備一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,以減輕數(shù)據(jù)庫(kù)的壓力。好了,需求已經(jīng)提出來(lái)了,現(xiàn)在來(lái)考慮如何將其實(shí)現(xiàn)。而當(dāng)在開(kāi)新區(qū)的時(shí)候,或許要配備40臺(tái)登錄服才能應(yīng)付那如潮水般涌入的玩家登錄請(qǐng)求。因?yàn)榈卿浄幚淼倪壿嬒鄬?duì)來(lái)說(shuō)比較簡(jiǎn)單,就是將玩家提交的帳號(hào)和密碼送到數(shù)據(jù)庫(kù)進(jìn)行驗(yàn)證,和生成會(huì)話密鑰發(fā)送給游戲服和客戶端,操作完成后連接就會(huì)立即斷開(kāi),而且玩家在以后的游戲過(guò)程中不會(huì)再與登錄服打任何交道。我們把觀察點(diǎn)先集中在一個(gè)大區(qū)內(nèi)。所以,結(jié)構(gòu)本無(wú)所謂正確與錯(cuò)誤;當(dāng)然,優(yōu)秀的結(jié)構(gòu)更有助于系統(tǒng)的搭建,對(duì)系統(tǒng)的可擴(kuò)展性及可維護(hù)性也有更大的幫助。最后是一個(gè)純技術(shù)問(wèn)題,有關(guān)socket連接數(shù)的最大限制。)然后是網(wǎng)絡(luò)協(xié)議的選擇,以前的選擇大多傾向于UDP,為了可靠傳輸一般自己都會(huì)在上面實(shí)現(xiàn)一層封裝,而現(xiàn)在更普通的是直接采用本身就很可靠的TCP,或者TCP與UDP的混用。差不多就這么多了吧,接下來(lái)我們會(huì)按照這個(gè)大致的結(jié)構(gòu)來(lái)詳細(xì)討論各部分的實(shí)現(xiàn)。我們的游戲服務(wù)器也如此。首先是當(dāng)前的Zone Server要做的事情太多了,以至于他都處理不了多少連接。好吧,我們還是把之前留下的問(wèn)題拿出來(lái)解決掉吧。什么?你說(shuō)夢(mèng)幻、魔獸還有史先生的那個(gè)什么征途遠(yuǎn)不止這么點(diǎn)人了!噢,我說(shuō)的是大多數(shù),是大多數(shù),不包括那些明星。問(wèn)題恰恰在于你是隨便寫(xiě)的,而MMORPG的服務(wù)器是復(fù)雜設(shè)計(jì)的。服務(wù)器結(jié)構(gòu)探討繼續(xù)世界服都已經(jīng)看出來(lái)了,這種每切換一次地圖就要重新連接服務(wù)器的方式實(shí)在是不夠優(yōu)雅,而且在實(shí)際游戲運(yùn)營(yíng)中也發(fā)現(xiàn),地圖切換導(dǎo)致的卡號(hào),復(fù)制裝備等問(wèn)題非常多,這里完全就是一個(gè)事故多發(fā)地段,如何避免這種頻繁的連接操作呢?最直接的方法就是把那個(gè)圖倒轉(zhuǎn)過(guò)來(lái)就行了。一般來(lái)說(shuō),我們的游戲世界不可能會(huì)只有一塊或者兩塊小地圖,那順理成章的,也就需要一個(gè)地圖管理者。世界中有些地圖間雖然在地理上是直接相連的,但我們發(fā)現(xiàn)其游戲內(nèi)部的邏輯卻是完全隔離的。而當(dāng)我們要到一區(qū)去創(chuàng)建角色開(kāi)始游戲的時(shí)候,在一區(qū)的帳號(hào)數(shù)據(jù)庫(kù)中并沒(méi)有我們的帳號(hào)數(shù)據(jù),所以,我們必須先到官網(wǎng)上做一次激活操作。而對(duì)于數(shù)據(jù)庫(kù)的應(yīng)用,在這種結(jié)構(gòu)下,登錄服及游戲世界服都會(huì)需要連接數(shù)據(jù)庫(kù)。一般來(lái)說(shuō),使用現(xiàn)有的商業(yè)數(shù)據(jù)庫(kù)系統(tǒng)比自己手工技術(shù)先進(jìn)要明智得多。我們可以試著從實(shí)際需求的角度來(lái)考慮一下這個(gè)問(wèn)題。早期的游戲大都采用的是這種結(jié)構(gòu),有些游戲在實(shí)現(xiàn)時(shí)采用了一些技術(shù)手段使得在切換游戲服時(shí)不需要再次驗(yàn)證帳號(hào),但整體結(jié)構(gòu)還是未做改變。關(guān)于為什么要提供用戶名和密碼才能進(jìn)入的問(wèn)題我們這里不打算做過(guò)多討論,云風(fēng)曾對(duì)此也提出過(guò)類(lèi)似的疑問(wèn),并給出了只用一個(gè)標(biāo)識(shí)串就能進(jìn)入的設(shè)想,有興趣的可以去看看他們的討論。而更重要的可能是,都是被逼出來(lái)的吧!)好了,閑話少說(shuō),下一篇,也就是第一篇了,主題為,服務(wù)器結(jié)構(gòu)探討。關(guān)于游戲開(kāi)發(fā),正如云風(fēng)在其blog上所說(shuō),游戲項(xiàng)目始終只是個(gè)小工程,另外開(kāi)發(fā)時(shí)間還是個(gè)很重要的問(wèn)題,所以軟件工程的思想及方法在大部分的游戲公司中并不怎么受歡迎。另外由于為避免與公司引起一些不必要的糾紛,我所描述的全都是通過(guò)google能夠找到的資料,所以也可以認(rèn)為我下面的內(nèi)容都是網(wǎng)上所找資料的整理合集。有些工作室性質(zhì)的開(kāi)發(fā)團(tuán)隊(duì),那就更簡(jiǎn)單了。好的結(jié)構(gòu)不是一蹴而就的,而且每個(gè)設(shè)計(jì)者心中的那把尺都不相同,所以這個(gè)優(yōu)秀結(jié)構(gòu)的定義也就沒(méi)有定論。在大多數(shù)情況下,一個(gè)大區(qū)內(nèi)都會(huì)有多組游戲服,也就是多個(gè)游戲世界可供選擇。這樣處理短連接的過(guò)程使得系統(tǒng)在大多數(shù)情況下都是比較空閑的,但是在某些時(shí)候,由于請(qǐng)求比較密集,比如開(kāi)新服的時(shí)候,登錄服的負(fù)載又會(huì)比較大,甚至?xí)幚聿贿^(guò)來(lái)。所以,登錄服在設(shè)計(jì)上應(yīng)該能滿足這種動(dòng)態(tài)增刪的需求,我們可以在任何時(shí)候?yàn)榇髤^(qū)增加或減少登錄服的部署。對(duì)于負(fù)載均衡來(lái)說(shuō),已有了成熟的解決方案。所以,整體的服務(wù)器結(jié)構(gòu)應(yīng)該是一個(gè)大區(qū)有一臺(tái)帳號(hào)數(shù)據(jù)庫(kù)服務(wù)器,所有的登錄服都連接到這里。對(duì)于現(xiàn)在大多數(shù)MMORPG來(lái)說(shuō),游戲服務(wù)器要處理的基本邏輯有移動(dòng)、聊天、技能、物品、任務(wù)和生物等,另外還有地圖管理與消息廣播來(lái)對(duì)其他高級(jí)功能做支撐。當(dāng)兩個(gè)人合作做一件事時(shí),我們可以以對(duì)等的關(guān)系相互協(xié)商著來(lái)做,而且一般也都不會(huì)有什么問(wèn)題。當(dāng)我們要進(jìn)入某張地圖時(shí),會(huì)從中心服上取得該地圖的IP和port告訴客戶端,客戶端主動(dòng)去連接,這樣進(jìn)入他想要去的游戲地圖。對(duì)于一般的MMORPG服務(wù)器來(lái)說(shuō),單臺(tái)服務(wù)器的承載量平均在2000左右,如果你的服務(wù)器很不幸地只能帶 1000人,沒(méi)關(guān)系,不少游戲都是如此;如果你的服務(wù)器上跑了3000多玩家依然比較流暢,那你可以自豪地告訴你的策劃,多設(shè)計(jì)些大量消耗服務(wù)器資源的玩法吧,比如大型國(guó)戰(zhàn)、公會(huì)戰(zhàn)爭(zhēng)等。再回過(guò)頭來(lái)看看我們想要實(shí)現(xiàn)的結(jié)構(gòu),我們既想要有一個(gè)唯一的入口,使得客戶端不用頻繁改變連接,又希望這個(gè)唯一入口的負(fù)載不會(huì)太大,以致于接受不了多少連接。一般來(lái)說(shuō),我們把這臺(tái)負(fù)責(zé)連接管理的服務(wù)器稱(chēng)為網(wǎng)關(guān)服務(wù)器,因?yàn)閮?nèi)部的數(shù)據(jù)都要通過(guò)這個(gè)網(wǎng)關(guān)才能出去,不過(guò)從這臺(tái)服務(wù)器提供的功能來(lái)看,稱(chēng)其為反向代理服務(wù)器可能更合適。新增加了網(wǎng)關(guān)服后需要在大區(qū)服上做相應(yīng)的支持,或者再簡(jiǎn)單點(diǎn),有一臺(tái)主要的網(wǎng)關(guān)服,當(dāng)其負(fù)載較高時(shí),主動(dòng)將新到達(dá)的連接重定向到其他網(wǎng)關(guān)服上。還有聊天處理邏輯,這部分與游戲邏輯沒(méi)有任何關(guān)聯(lián),我們也完全可以將其獨(dú)立出來(lái),放到一臺(tái)單獨(dú)的聊天服務(wù)器上去實(shí)現(xiàn)。GM可以采用跟普通玩家一樣的拉入方式來(lái)進(jìn)入游戲,當(dāng)然權(quán)限會(huì)比普通玩家高一些,也可以提供一臺(tái)GM服務(wù)器專(zhuān)門(mén)用來(lái)處理GM命令,這樣可以有更高的安全性,GM服一般接在中心服務(wù)器上。突然發(fā)現(xiàn)自己一旦羅嗦起來(lái)還真是沒(méi)完沒(méi)了。還有消息包格式的定義,這個(gè)曾在云風(fēng)的blog上展開(kāi)過(guò)激烈的爭(zhēng)論。在服務(wù)器上port是監(jiān)聽(tīng)用的,想象這樣一種情況,web server在80端口上監(jiān)聽(tīng),當(dāng)一個(gè)連接到來(lái)時(shí),系統(tǒng)會(huì)為這個(gè)連接分配一個(gè)socket句柄,同時(shí)與其在80端口上進(jìn)行通訊;當(dāng)另一個(gè)連接到來(lái)時(shí),服務(wù)器仍然在80端口與之通信,只是分配的socket句柄不一樣。對(duì)于一個(gè)最簡(jiǎn)單的游戲服務(wù)器來(lái)說(shuō),它只需要能夠接受來(lái)自客戶端的連接請(qǐng)求,然后處理客戶端在游戲世界中的移動(dòng)及交互,也即游戲邏輯處理即可。這樣,我們可為每組服務(wù)器單獨(dú)配備一臺(tái)登錄服。所以,我們能否更合理地配置登錄服資源,使得整個(gè)大區(qū)內(nèi)的登錄服可以共享就成了下一步改進(jìn)的目標(biāo)。還是拿開(kāi)新區(qū)的情況來(lái)說(shuō),即使新增加登錄服滿足了玩家登錄的請(qǐng)求,游戲世界服的承載能力依然有限,玩家一樣只能在排隊(duì)系統(tǒng)中等待,或者是進(jìn)入到游戲世界中導(dǎo)致大家都卡。最新的DNS服務(wù)已實(shí)現(xiàn)了根據(jù)服務(wù)器系統(tǒng)狀態(tài)來(lái)實(shí)現(xiàn)的動(dòng)態(tài)負(fù)載均衡,也就是實(shí)現(xiàn)了真正意義上的負(fù)載均衡,這樣也就有效地解決了當(dāng)某臺(tái)登錄服當(dāng)機(jī)后,DNS服務(wù)器不能立即做出反應(yīng)的問(wèn)題。最后,我們的服務(wù)器結(jié)構(gòu)就像這樣:大區(qū)服務(wù)器/|/|登錄服1登錄服2世界服1世界服2||||||帳號(hào)數(shù)據(jù)庫(kù)DBSDBS這里既然討論到了大區(qū)及帳號(hào)數(shù)據(jù)庫(kù),所以順帶也說(shuō)一下關(guān)于激活大區(qū)的概念。在所有這些基礎(chǔ)邏輯中,與我們要討論的服務(wù)器結(jié)構(gòu)關(guān)系最緊密的當(dāng)屬地圖管理方式。正如俗語(yǔ)所說(shuō)的那樣,三個(gè)和尚可能會(huì)碰到?jīng)]水喝的情況。我們來(lái)看看結(jié)構(gòu)圖是怎樣的:中心服務(wù)器/ / 登錄服 地圖1 地圖2 地圖n | / / | / /客戶端很簡(jiǎn)單,不是嗎。我們將地圖服務(wù)器分開(kāi)來(lái)原來(lái)也是想將負(fù)載分開(kāi),以多帶些客戶端,現(xiàn)在要所有的連接都從中心服上轉(zhuǎn)發(fā),那連接數(shù)又遇到單臺(tái)服務(wù)器的可最大承載量的瓶頸了。既然如此,那五六千個(gè)連接也還有滿足我們的要求。網(wǎng)關(guān)之后的結(jié)構(gòu)我們依然可以采用之前描述的方案,只是,似乎并沒(méi)有必要為每一個(gè)地圖都開(kāi)一個(gè)獨(dú)立的監(jiān)聽(tīng)端口了。每個(gè)代表客戶端玩家的對(duì)象內(nèi)部都保留一個(gè)代表其連接的對(duì)象,消息廣播時(shí)要求每個(gè)玩家對(duì)象使用自己的連接對(duì)象發(fā)送數(shù)據(jù)即可,至于連接是在什么地方,那是完全透明的。緩存的數(shù)據(jù)會(huì)定時(shí)的寫(xiě)入到后臺(tái)數(shù)據(jù)庫(kù)中。任何為用戶提供服務(wù)的地方都會(huì)有日志記錄,游戲服務(wù)器當(dāng)然也不例外。首先是服務(wù)器操作系統(tǒng),linux與windows之爭(zhēng)隨處可見(jiàn),其實(shí)在大多數(shù)情況下這不是我們所能決定的,似乎各大公司也基本都有了自己的傳統(tǒng),如網(wǎng)易的freebsd,騰訊的linux等。另外早期有些游戲的包格式定義是以特殊字符作分隔的,這樣一個(gè)好處是其中某個(gè)包出現(xiàn)錯(cuò)誤后我們的游戲還能繼續(xù)。按windows網(wǎng)絡(luò)編程第二版上的說(shuō)法,這個(gè)上限值配置影響。哦,如果我們只是希望密碼不可能被還原出來(lái),那還不容易嗎,使用一個(gè)不可逆的散列算法就行了。這其中之一是一個(gè)叫做SRP的算法,全稱(chēng)叫做Secure Remote Password,即安全遠(yuǎn)程密碼。好了,登錄服要實(shí)現(xiàn)的功能就這些,很簡(jiǎn)單,是吧。登錄服中唯一的這一個(gè)線程,也就是主循環(huán)線程對(duì)監(jiān)聽(tīng)的socket做select操作,為每個(gè)連接進(jìn)來(lái)的客戶端讀取其上的數(shù)據(jù)并立即進(jìn)行處理,直到服務(wù)器收到SIGABRT或SIGBREAK信號(hào)時(shí)結(jié)束。數(shù)據(jù)庫(kù)的處理也類(lèi)似,會(huì)使用異步的方式,也是避免耗時(shí)的查詢(xún)過(guò)程將游戲服務(wù)器主循環(huán)阻塞住。主邏輯循環(huán)的結(jié)構(gòu)還是很簡(jiǎn)單的,復(fù)雜的部分都在如何處理這些消息包的邏輯上。}網(wǎng)絡(luò)IO,數(shù)據(jù)庫(kù)IO線程把整理好的消息包都加入到主邏輯循環(huán)線程的這個(gè)消息隊(duì)列中便返回。網(wǎng)絡(luò)IO線程要給邏輯線程投遞消息時(shí),會(huì)從隊(duì)列容器中取一個(gè)空隊(duì)列來(lái)使用,直到將該隊(duì)列填滿后再放回容器中換另一個(gè)空隊(duì)列。所以,這種方案下加鎖的次數(shù)會(huì)比較多一些,IO線程每次寫(xiě)隊(duì)列時(shí)都要加鎖,邏輯線程在調(diào)換隊(duì)列時(shí)也需要加鎖,但邏輯線程在讀隊(duì)列時(shí)是不需要加鎖的。也許我們可以使用內(nèi)存池,比如SGI STL中附帶的小內(nèi)存分配器。至于為什么,不需要多做解釋了吧。一般來(lái)說(shuō)最直接的方法就是邏輯線程什么時(shí)候想發(fā)數(shù)據(jù)了就直接調(diào)用相關(guān)的socket API發(fā)送,這要求服務(wù)器的玩家對(duì)象中保存其連接的socket句柄。服務(wù)器公共組件實(shí)現(xiàn)狀態(tài)機(jī)有關(guān)State模式的設(shè)計(jì)意圖及實(shí)現(xiàn)就不從設(shè)計(jì)模式中摘抄了,我們只來(lái)看看游戲服務(wù)器編程中如何使用State設(shè)計(jì)模式。我們?cè)賮?lái)看看設(shè)計(jì)模式中對(duì)State模式的說(shuō)明,其中關(guān)于State模式適用情況里有一條,當(dāng)操作中含有龐大的多分支的條件語(yǔ)句,且這些分支依賴(lài)于該對(duì)象的狀態(tài),這個(gè)狀態(tài)通常用一個(gè)或多個(gè)枚舉變量表示。}。使用狀態(tài)機(jī)雖然避免了復(fù)雜的判斷語(yǔ)句,但也引入了新的麻煩。有些類(lèi)似于QT中的event與signal,我將一些動(dòng)作請(qǐng)求消息定義為事件,而將狀態(tài)改變消息定義為信號(hào)。這一功能需求在游戲服務(wù)器上是到處存在的。在QT中,事件使用了一個(gè)事件隊(duì)列來(lái)維護(hù),如果事件的處理中又產(chǎn)生了新的事件,那么新的事件會(huì)加入到隊(duì)列尾,直到當(dāng)前事件處理完畢后,QApplication再去隊(duì)列頭取下一個(gè)事件來(lái)處理。關(guān)于登錄服、大區(qū)服及游戲世界服的結(jié)構(gòu)之前已做過(guò)探討,這里再把各自的職責(zé)和關(guān)系列一下。但是當(dāng)下一次服務(wù)器再維護(hù)后,所有的世界服都不存在了,全部重新開(kāi)始添加。這個(gè)或許就可以用前面描述過(guò)的事件方式,或者就是觀察者模式了。世界選擇狀態(tài)則提供了一個(gè)列表給客戶端,其中包括了所有游戲世界網(wǎng)關(guān)服務(wù)器的IP、PORT和當(dāng)前負(fù)載情況。這時(shí),乘務(wù)員會(huì)客氣地告訴你要先換登機(jī)牌,那登機(jī)牌又從哪來(lái)?檢票口換的,人家會(huì)先驗(yàn)明你的身份,確認(rèn)后才會(huì)發(fā)給你登機(jī)牌。而不管在哪里,這個(gè)查詢(xún)的壓力都是有點(diǎn)大的,想想,全區(qū)所有玩家呢。同時(shí),所有服務(wù)器上的session key在連接關(guān)閉后一定會(huì)被刪除,保證一個(gè)session key真正只為一次連接會(huì)話服
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1