ci網(wǎng)絡(luò)重復(fù)型服務(wù)器通信軟件的設(shè)計(jì)_第1頁(yè)
ci網(wǎng)絡(luò)重復(fù)型服務(wù)器通信軟件的設(shè)計(jì)_第2頁(yè)
ci網(wǎng)絡(luò)重復(fù)型服務(wù)器通信軟件的設(shè)計(jì)_第3頁(yè)
ci網(wǎng)絡(luò)重復(fù)型服務(wù)器通信軟件的設(shè)計(jì)_第4頁(yè)
ci網(wǎng)絡(luò)重復(fù)型服務(wù)器通信軟件的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

TCP/IP網(wǎng)絡(luò)重復(fù)型服務(wù)器通信軟件的設(shè)計(jì)本文介紹一種新型的基于消息隊(duì)列的重復(fù)型服務(wù)器通信軟件的設(shè)計(jì)方法,不同于并發(fā)型服務(wù)器和一般的重復(fù)型服務(wù)器通信軟件,這種新的軟件具有生成的子進(jìn)程數(shù)少的優(yōu)點(diǎn),并且容易對(duì)客戶機(jī)與服務(wù)器的連接進(jìn)行管理,適用于客戶機(jī)數(shù)量較多和隨機(jī)數(shù)據(jù)通信的情況,能夠有效地提高服務(wù)器的運(yùn)行效率。并發(fā)服務(wù)器與重復(fù)服務(wù)器的區(qū)別一般TCP/IP服務(wù)器通信軟件都是并發(fā)型的,即是由一個(gè)守護(hù)進(jìn)程負(fù)責(zé)監(jiān)聽客戶機(jī)的連接請(qǐng)求,然后再由守護(hù)進(jìn)程生成一個(gè)或多個(gè)子進(jìn)程與客戶機(jī)具體建立連接以完成通信,其缺點(diǎn)是隨著連接的客戶機(jī)數(shù)量的增多,生成的通信子進(jìn)程數(shù)量會(huì)越來越多,在客戶機(jī)數(shù)量較多的應(yīng)用場(chǎng)合勢(shì)必影響服務(wù)器的運(yùn)行效率。一般的重復(fù)服務(wù)器指的是服務(wù)器在接收客戶機(jī)的連接請(qǐng)求后即與之建立連接,然后要在處理完與客戶機(jī)的通信任務(wù)后才能再去接收另一客戶機(jī)的請(qǐng)求連接,其優(yōu)點(diǎn)是不必生成通信子進(jìn)程,缺點(diǎn)是客戶機(jī)在每次通信之前都要與服務(wù)器建立連接,開銷過大,不能用于隨機(jī)的數(shù)據(jù)通信和繁忙的業(yè)務(wù)處理。本文提出的新型的重復(fù)型服務(wù)器不同于一般的重復(fù)服務(wù)器,它摒棄了上述兩類服務(wù)器的缺點(diǎn)綜合其優(yōu)點(diǎn),該服務(wù)器通信軟件具有一般重復(fù)服務(wù)器的特征但又能處理客戶機(jī)的隨機(jī)訪問,在客戶機(jī)數(shù)量多且業(yè)務(wù)繁忙的應(yīng)用場(chǎng)合將發(fā)揮其優(yōu)勢(shì)。重復(fù)型服務(wù)器通信軟件只用三個(gè)進(jìn)程就可完成與所有客戶機(jī)建立連接,并始終保持這些連接。重復(fù)型服務(wù)器通信軟件與客戶機(jī)建立連接的方法基本思路當(dāng)?shù)谝慌_(tái)客戶機(jī)向服務(wù)器請(qǐng)求連接時(shí),服務(wù)器的守護(hù)進(jìn)程與之建立初始連接(L0),客戶機(jī)利用L0向服務(wù)器發(fā)送兩個(gè)端口號(hào),守護(hù)進(jìn)程將客戶機(jī)的IP地址和端口號(hào)登記在共享內(nèi)存的記錄中,然后關(guān)閉L0。由守護(hù)進(jìn)程生成的兩個(gè)通信子進(jìn)程從共享內(nèi)存中獲得客戶機(jī)IP地址及端口號(hào)后,分別向客戶機(jī)請(qǐng)求連接,建立一個(gè)從客戶機(jī)讀的連接(L1)和一個(gè)往客戶機(jī)寫的連接(L2),并將兩個(gè)連接的套接字的句柄記錄在共享內(nèi)存中。當(dāng)另一臺(tái)客戶機(jī)請(qǐng)求連接時(shí),守護(hù)進(jìn)程不再生成通信子進(jìn)程,只是將客戶機(jī)IP地址和端口號(hào)同樣登記在共享內(nèi)存中。通信子進(jìn)程在一個(gè)大循環(huán)中先查詢共享內(nèi)存中是否有新的記錄,如果有則與這一臺(tái)客戶機(jī)建立連接,然后輪詢所有已建立的連接的讀套接字,查看是否有數(shù)據(jù)可讀,有則讀取數(shù)據(jù),同時(shí)標(biāo)明該數(shù)據(jù)是從共享內(nèi)存中的哪條記錄上的讀套接字中獲得的,再由另一個(gè)通信子進(jìn)程根據(jù)這個(gè)記錄的編號(hào)從共享內(nèi)存中獲得對(duì)應(yīng)的寫套接字,最后將結(jié)果數(shù)據(jù)往該套接字寫往客戶機(jī)。2.2建立連接⑴服務(wù)器通信軟件的初始進(jìn)程首先建立公用端口上的套接字,并在該套接字上建立監(jiān)聽隊(duì)列,同時(shí)生成一個(gè)守護(hù)進(jìn)程(Daemon)tcp_s,然后初始進(jìn)程就退出運(yùn)行。守護(hù)進(jìn)程在函數(shù)accept處堵塞住直到有客戶機(jī)的連接請(qǐng)求,一有連接請(qǐng)求即調(diào)用server函數(shù)處理,然后繼續(xù)循環(huán)等待另一臺(tái)客戶機(jī)的請(qǐng)求。因?yàn)門CP/IP在連接被拆除后為了避免出現(xiàn)重復(fù)連接的現(xiàn)象,一般是將連接放在過時(shí)連接表中,連接在拆除后若要避免處于TIME_WAIT狀態(tài)(過時(shí)連接),可調(diào)用setsockopt設(shè)置套接字的linger延時(shí)標(biāo)志,同時(shí)將延時(shí)時(shí)間設(shè)置為0。服務(wù)器在/etc/services文件中要登記一個(gè)全局公認(rèn)的公用端口號(hào):tcp_server2000/tcp。旁st臂ru策ct奔s顯er辰ve規(guī)nt越*辱sp課;

謙st仿ru刻ct庭s律oc竹ka致dd縫r_惑in細(xì)p釣ee土ra路dd膠r_先in房,m羨ya癢dd拐r_鴨in釋;

喊l(fā)i戲nk夸f=里0;厘

淚sp冶=g貨et惜se希rv騰by快na鞋me感("名tc舉p_貌se誼rv蟻er躺",螺"t少cp喊")愧;

催ls榮=s抗oc拿ke編t(瞧AF株_I悄NE錯(cuò)T,值SO患CK槍_S漏TR挖EA名M,戀0)繞;糧/*懲創(chuàng)蘆建監(jiān)約聽套遙接字若*魂/

朝my余ad傲d攏r_雕in罵.s挎in膽_a惱dd滅r.菌s_脊ad化dr裕=I狂NA捕DD便R_句AN產(chǎn)Y;冷

敏my暴ad鍋dr混_i螺n.查si指n_姑po室rt板=s摔p-耽>s儀_p你or點(diǎn)t;考/架*葉公用謊端口勸號(hào)慈*/妹

窮bi淡nd論(l華s,白&m萬(wàn)ya抵dd呢r_素in絲,s點(diǎn)iz錄eo皮f(聽st服ru供ct郊s癢oc突ka槍dd竭r_焰in舒))矮;

蛙li有st絮en較(l疑s,幻5)抄;

煙qi虛d3道=m約sg導(dǎo)ge糾t(貧MS軍GK穗EY款3,趴0x兆1f鹿f)磚;腥/*夜獲抹得消第息隊(duì)骨列的尖標(biāo)志額號(hào)嶄*/眠

體qi順d4嫩=m紗sg誘ge閑t(翻MS禾GK慌EY康4,鼓0x敲1f驢f)勉;

頑si穴gn藍(lán)al覺(S常IG針CL熄D,訪SI其G_斑IG諷N)轟;定/*竄避推免子超進(jìn)程喊在退世出后惡變?yōu)槭┧琅P進(jìn)程煮*局/

默ad穩(wěn)dr新le盯n=雀si談ze保of俗(s流tr勵(lì)uc稀t伍so鬧ck我ad寨dr氣_i窮n)稱;

眠li鄰ng縣er燦le哄n=莊si更ze暫of盆(s杏tr具uc根t晝li拍ng悉er逃);召

罵li獸ng祝er陡.l敞_o黨no乞ff界=1懲;

烈li東ng冒er飲.l巨_l刷in兆ge泰r=窄0;倆

銹se仗tp沾gr準(zhǔn)p(確);財(cái)

磚sw匆it胞ch有(f引or淺k(李))暗{剃/*薯生磚成D威ae交mo傭n搭*/烏

側(cè)ca罪se篩-元1:斤ex慰it苦(1想);您

鈴ca腳se囑0金:畜/*荒D級(jí)ae乞mo貓n斗*/販

隊(duì)fo攝r(盛;;油){鳥

跡s=圍ac詠ce沙pt躲(l負(fù)s,服&p標(biāo)ee守ra癢dd墓r_窩in喇,&避ad亭dr歪le撈n)鞠;

隆se等ts直oc飼k聯(lián)op英t(情s,叔SO腎L_遞SO抖CK步ET必,S著O_潤(rùn)LI懲NG太ER鈔,&紫li練ng懸er知,l惱in牢ge揉rl該en棍);震

典se史rv瞇er根()尿;

稻cl垮os玉e(酸s)襖;

毫}

年de敏fa顧ul覺t:魄

梁fp僻ri丟nt旅f(最st遷de撲rr坊,"氏初始碌進(jìn)程撒退出階,由跳守護(hù)崗進(jìn)程滴監(jiān)聽胖客戶峽機(jī)的殘連接慧請(qǐng)求痰.\恥n"額);級(jí)

你}⑵客戶機(jī)以這樣的形式運(yùn)行通信程序tcp_c:tcp_crhostname,rhostname為客戶機(jī)所要連接的服務(wù)器主機(jī)名??蛻魴C(jī)上的/etc/services文件中也要登記:tcp_server2000/tcp,公用端口號(hào)2000要與服務(wù)器一樣。頌in娘t跑qi屑d1呈,q貝id某2,饅s_算c1哨,s麻_c泊2,攻cp容or倘t1輪,c萬(wàn)po盒rt眠2;恢

林st銳ru懷ct貪s熄er舉ve姜nt遼*摔sp錢;

騾st善ru騰ct歐h劉os禽te工nt建*標(biāo)hp氧;

火me三ms熄et肢((蓄ch槍ar醉*抄)&耽my愧ad孫dr嚼_i膜n,述0,簽si鋤ze修of喂(s乎tr副uc羞t侵so饅ck想ad辮dr烈_i淘n)眾);跟

收me池ms羽et偏((煉ch跟ar墳*透)&廈pe汗er車ad否dr爺_i秘n,屬0,覽si遮ze居of脊(s彎tr戶uc王t守so息ck莊ad夾dr裹_i墳n)孩);負(fù)

今ad牧dr軍le膚n=設(shè)si堆ze袍of鮮(s些tr鏡uc鬧t想so瘡ck臂ad第dr暗_i椅n)紹;

則sp怪=g華et效se皮rv鳴b位yn狐am輸e(雷"t酒cp罩_s塌er倦ve界r"努,"沖tc婆p"加);震

月hp耀=g稠et印ho書st慘by跨na坦me澤(a隊(duì)rg選v[羨1]刃);棚/窗*友從/雖et護(hù)c/圣ho阻st枕s中呈獲取理服務(wù)陡器的五IP怕地址臉*凍/

妄qi饅d1風(fēng)=m遠(yuǎn)sg睜ge喘t(均MS翻GK拾EY競(jìng)1,禁0x蘆1f讀f)蚊;

皺qi屋d2誕=m繡sg啟ge晉t(煌MS害GK辰EY芽2,踏0x集1f謎f)谷;

糠cp抬or望t1賺=6糕00宣0;弊

父s=缺rr摧es盆vp紐or制t(粘&c著po做rt某1)左;

托pe令er狹ad諒dr罪_i斑n.杰si略n_集fa半mi贊ly悅=h吉p-壞>h孕_a校dd麻rt百yp鳴e;縱

改bc廚op梳y(光hp均->層h_趙ad逢dr憂_l籠is維t[址0]簽,(業(yè)ca匹dd督r_搏t)船&p磚ee冬ra更dd忘r_撥in值.s守in闊_a技dd蕉r,撕hp浸->枯h_繭le敲ng茅th嶼);肉

艘pe嶺er飽ad雨dr榆_i捆n.翼si蟲n_您po似rt鋼=s英p-份>s以_p時(shí)or宅t;格

窮co羞nn帶ec演t(宴s,盆(s租tr剖uc妖t紀(jì)so序ck獻(xiàn)ad哈dr彼*侄)&瀉pe許er饅ad樂dr境_i公n,狗si罪ze癢of希(p床ee梳ra撓dd塌r_利in豈))漆;

攏cp竭or紋t1躍--綁;

碼s_數(shù)c1欄=r妖re魚sv亂po茫rt鴿(&怖cp蠢or獻(xiàn)t1貌);汗

襯cp技o(jì)r衣t2食=c疫po罷rt腎1;勺

閑s_勇c2毅=r遭re切sv給po悄rt萬(wàn)(&島cp嘩or盯t2忌);頓

缺sp塵ri系nt誕f(匪cp躁or杏ts淋tr屋,"游%d案x%固d"毀,c堡po智rt熊1,原cp宜or娃t2久);舌

醉wr毛it盜e(欲s,蝴cp別or培ts皆tr篇,s灣tr姜le溝n(左cp更or王ts鞏tr冬)+熄1)伍;

幟cl血os兩e(斃s)常;先給變量cport1置一個(gè)整數(shù)后調(diào)用rresvport函數(shù),該函數(shù)先檢查端口號(hào)cport1是否已被占用,如果已被占用就減一再試,直到找到一個(gè)未用的端口號(hào),然后生成一個(gè)套接字,將該套接字與端口號(hào)相聯(lián)形成客戶機(jī)端的半相關(guān),接下調(diào)用connect函數(shù)向服務(wù)器發(fā)出連接請(qǐng)求??蛻魴C(jī)在發(fā)出連接請(qǐng)求之前,已用函數(shù)gethostbyname和getservbyname獲得了服務(wù)器的IP地址及其公用端口號(hào),這樣就形成了一個(gè)完整的相關(guān),可建立起與服務(wù)器的初始連接。接下來再創(chuàng)建兩個(gè)套接字s_c1和s_c2,利用初始連接將客戶機(jī)的兩個(gè)套接字的端口號(hào)以字符串的形式發(fā)送給服務(wù)器,這時(shí)初始連接的任務(wù)已經(jīng)完成就可將其關(guān)閉。以上就完成了與服務(wù)器的初始連接,接下來客戶機(jī)等待服務(wù)器的兩次連接請(qǐng)求。⑶tcp_s的監(jiān)聽隊(duì)列在收到客戶機(jī)發(fā)來的連接請(qǐng)求后,由server函數(shù)讀出客戶機(jī)發(fā)送來的兩個(gè)端口號(hào),并在第一次調(diào)用時(shí)生成兩個(gè)通信子進(jìn)程tcp_s1和tcp_s2,以后就不再生成,這是與并發(fā)服務(wù)器最大的不同。tcp_s進(jìn)程將客戶機(jī)的兩個(gè)端口號(hào)和IP地址以記錄的形式登記在共享內(nèi)存最后一條記錄中,子進(jìn)程通過共享內(nèi)存獲得這兩個(gè)端口號(hào),然后再分別與客戶機(jī)建立連接。tcp_s繼續(xù)處于監(jiān)聽狀態(tài),以便響應(yīng)其他客戶機(jī)的連接請(qǐng)求。兩個(gè)子進(jìn)程都應(yīng)該關(guān)閉從父進(jìn)程繼承來的但又沒有使用的套接字s。稀se綁rv斜er礎(chǔ)()功{

瞧in制t版f;噸ch隸ar肯c看;

專cp餓or屠t1騙=c瞇po萬(wàn)rt具2=穗f=瞧0;革

與fo泥r(玉;;過){賀

獻(xiàn)re角ad族(s陜,&牲c(diǎn),凡1)弓;

據(jù)if潤(rùn)(c污==往0)笑b魄re依ak糟;

硬if塌(c福==鞭'x勸')夢(mèng){

鋸f=甚1;噴co做nt合in綠ue叔;

侮}

走if璃(f慰)推cp慕or添t2帖=(中cp系or禿t2咱*1叼0)撥+(效c-層'0俘')船;

閥el慣se松c聰po拋rt拖1=止(c筑po嘗rt罷1*高10援)+虛(c梁-'秒0'包);已

初}

賤/*置在喪共享繭內(nèi)存朽中登招記客竟戶機(jī)石端口卻號(hào)和木IP暗地址行*鋼/

叼sh匪m_詢lo模gi禿n(巷cp餅or狹t1夜,c編po無(wú)rt制2,齡pe勒er搜a(bǔ)d軟dr嘩_i盆n.靠si重n_芝ad念dr去.s劣_a項(xiàng)dd千r)廈;

砌if豬(l符in鋸kf滋==惰0)畏{拉/*客只烏生成蘆兩個(gè)三子進(jìn)以程獅*/刷

輸if撞(f響or腥k(灰)=邊=0好){帽/譜*縫子進(jìn)嶄程t丈cp躺_s泥2遼*/削

蟲cl禿os獅e(五s)腐;S役er景ve敘r_每Se山nd賠()薄;

網(wǎng)}e屈ls宗e

懇if侮(f白o(hù)r最k(衣)=稱=0桃){皂/譯*缸子進(jìn)案程t激cp描_s棗1印*/咬

權(quán)cl獎(jiǎng)os紅e(海s)宗;S館er勺ve餅r_扇Re朽ce匆iv畏e(鬧);治

黃}

殃}

鍬li配nk六f=包1;挖

恨}共享內(nèi)存的結(jié)構(gòu)如下,通信子進(jìn)程tcp_s1從s_socket1讀,tcp_s2往對(duì)應(yīng)的s_socket2寫。女st衫ru越ct蠶s宮_l要in譜ki付nf綢o{通

贈(zèng)in脅t姥id恨;觀/*蝶連餅接的如標(biāo)志煙號(hào),樂從1盞開始躲順序獵編號(hào)榆*捷/

憂in捉t襪s_反so疼ck菌et獅1;側(cè)/伸*更服務(wù)擺器的桑讀套狼接字題*近/

播in削t謀li帆nk僅f1奧;債/*脈與滾客戶皂機(jī)的潑cp億or深t1繳連接勤標(biāo)志崗,0角:未拴建立陰連接便,1彩:已微經(jīng)連驕接亮*/猴

習(xí)in進(jìn)t傘cp氏or漢t1護(hù);籮/*遠(yuǎn)客劑戶機(jī)葉的第孟一個(gè)此端口才號(hào)雞*/錯(cuò)

惠in君t姻s_罷so傳ck亭et炮2;桂/線*悶服務(wù)墨器的濾寫套綁接字伙*窄/

太i煎nt糧l年in齒kf襲2;炒/銹*棟與客霧戶機(jī)撈的c類po凍rt蠶2連沒接標(biāo)洲志材*/碼

隨in寬t肥cp榜or相t2性;膨/*季客縫戶機(jī)捐的第塘二個(gè)給端口仔號(hào)復(fù)*/庸

陷u_料lo甜ng繡c束li澇en病t_掙ad接dr是;書/*載客復(fù)戶機(jī)濾IP怎地址下*畢/

姿ch鞭ar為f漠la柜g;陪/犧*捐共享肥內(nèi)存才占用杰標(biāo)志登,'科i'貌:已裹占用夾,'井o'沖:未引占用牢*預(yù)/

寄};枝⑷tcp_c用listen(s_c1,5)在套接字s_c1上建立客戶機(jī)的第一個(gè)監(jiān)聽隊(duì)列,等待服務(wù)器的連接請(qǐng)求。在與服務(wù)器建立第一個(gè)連接后,再用listen(s_c2,5)建立第二個(gè)監(jiān)聽隊(duì)列,與服務(wù)器建立第二個(gè)連接。緩li怠st穿en倦(s則_c志1,備5)相;

桐s_堵w=暗ac比ce坑pt捐(s磨_c鍛1,升&p惜ee慰ra賓dd揀r_砌in避,&破ad分dr徐le辟n)瘋;

滅cl秧os五e(cuò)(鬼s_善c1奉);杜/勝*只潔允許究接收怎一次追連接鵲請(qǐng)求掙*/統(tǒng)

瓦li味ng值er怠.l罪_o科no酸ff宣=1箭;l騰in怪ge克r.申l_巧li龍ng聚er競(jìng)=0領(lǐng);

吹se灘ts同oc銀ko蘇pt燒(s葡_w榮,S哄OL謙_S莫OC嶄KE禁T,北SO墾_L扁IN欠GE袖R,稿&l余in逢ge喜r,衡si績(jī)ze著of毫(s虹tr仔uc掏t燃li僑ng睬er觀))敗;

竭li蹲st必en田(s井_c恥2,魯5)貿(mào);

佛s_慈r=改ac輛ce艦pt觸(s拆_c塔2,乏&p革ee逼ra屬dd們r(jià)_燈in煤,&亂ad噴dr別le芹n)恩;

摩c旋lo剪se錘(s怖_c骨2)懂;

齡se紙ts匆oc圣ko滲pt遼(s船_r瞎,S跨OL已_S洽OC鞠KE懸T,梢SO酒_L偶IN糾GE謊R,筆&l瑞in譽(yù)ge感r,詢si次ze列of幸(s歉tr兩uc投t擱li拔ng麗er氧))緊;⑸進(jìn)程tcp_s1調(diào)用函數(shù)Server_Receive在一個(gè)循環(huán)中不斷查詢是否又有新的客戶機(jī)登記在共享內(nèi)存中,方法是判斷共享內(nèi)存中最后一條記錄的linkf1標(biāo)志是否為0,如果為0就調(diào)函數(shù)connect_to_client與客戶機(jī)建立第一個(gè)連接,然后輪詢所有的讀套接字,有數(shù)據(jù)則讀,沒有數(shù)據(jù)則讀下一個(gè)讀套接字。歲Se崗rv雖er湖_R斗ec氧ei循ve德()屆{

暈in裂t叫s1寬,l寄en搭,i牧,l魯in勇kn蛾,l訂in罩kf護(hù)1,扭n;蠟

浴st棚ru君ct盟m趟sg吵_b犧uf捏*豬bu膠f,蓬mb遮uf疲;

績(jī)bu天f=私&m宿bu磨f;尾

券fo賊r(嶺;;制){括

貴li奏nk焦n=端sh博m_蔬in饑fo勺(0汗,G動(dòng)ET逐LI占NK碎N)都;

熊li斜nk寸f1夜=s甚hm廳_i孫nf助o(帽li競(jìng)nk秒n,烤GE萬(wàn)TL糕IN材KF注1)仍;

男if楚(l向in挪kf遙1=薄=0稱){毅

齊if涌((戶i=沖co擋nn炒ec餅t_福to隱_c靠li洞en程t(煩li敵nk嚴(yán)n,鉛1)穩(wěn))<拉0)暫{

退sh竟m_機(jī)lo隆go巧ut巖(l絕in壤kn原);援co直nt慎in秀ue答;

爪}

予}

利fo鏈r(企n=樸1;終n<仇=l念in頁(yè)kn蓋;n君++煮){峰

里s1胡=s熔hm葵_i賞nf嚴(yán)o(始n,夕GE連TS摔1)禁;

態(tài)i=鹽re游ad盈(s憂1,醬bu襲f,道MS檔GS針I(yè)Z搬E)推;

神if晚(i絲==叉0)衡{

情fp乖ri屑nt鼻f(躍st百de焰rr嶼,"雙A芽cl恩ie生nt廢e譯xi榴t!漏\n虎")跳;

足sh茶ut馬do百wn盾(s潑1,劫1)螞;c率lo東se喚(s霸1)山;

底sh規(guī)m_裝lo納go偉ut填(n扯);坊

焦li沒nk熱n-屆-;劑co出nt心in玉ue蹦;

饅}

泛if襖(i犁==彎-1柜)鑄co引nt姜in叛ue師;

膊bu橡f-扛>m彩ty峽pe息=M移SG吐TY咸PE快;b絮uf芹->煤si唇d=維n;硬

魯le軍n=歷st熔rl物en注(b萌uf異->取md哪at腦a)出;

威fp泛ri曉nt下f(葉st出d筐er獲r,卡"m鄭da秘ta孤=%月s\孟n"盼,b堆uf亞->值md匹at態(tài)a)爹;

喊i=他ms悟gs炸nd賊(q財(cái)id獸3,濁bu孫f,亞le鳥n+勿B(yǎng)U綠FC趕TL腐SI餐ZE器+1謙,0僚);歉

周}

校}

榜}由于已將讀套接字的讀取標(biāo)志設(shè)為O_NDELAY,所以沒有數(shù)據(jù)可讀時(shí)read函數(shù)就返回-1不會(huì)堵塞住。這樣我們才能接收到客戶機(jī)隨機(jī)的數(shù)據(jù)發(fā)送同時(shí)也才能及時(shí)響應(yīng)新的客戶機(jī)的連接請(qǐng)求,這是重復(fù)服務(wù)器得以實(shí)現(xiàn)的關(guān)鍵所在。如果read函數(shù)返回0則表示客戶機(jī)通信程序已退出或者別的原因,比如客戶機(jī)關(guān)機(jī)或網(wǎng)絡(luò)通信故障等,此時(shí)就要從共享內(nèi)存中清除相應(yīng)客戶機(jī)的記錄。在建立連接時(shí)如果出現(xiàn)上述故障也要從共享內(nèi)存中清除相應(yīng)客戶機(jī)的記錄。在有數(shù)據(jù)可讀時(shí)就將sid標(biāo)志設(shè)置為n,表示數(shù)據(jù)是從第n臺(tái)客戶機(jī)讀取的,這樣子進(jìn)程tcp_s2才可根據(jù)消息的sid標(biāo)志往第n臺(tái)客戶機(jī)寫數(shù)據(jù)。⑹進(jìn)程tcp_s2調(diào)用函數(shù)Server_Send,在一個(gè)循環(huán)中不斷查詢是否又有新的客戶機(jī)連接登記在共享內(nèi)存中,方法是判斷共享內(nèi)存中最后一條記錄的linkf2標(biāo)志是否為0,如果為0就調(diào)用函數(shù)connect_to_client與客戶機(jī)建立第二個(gè)連接,然后再?gòu)南㈥?duì)列中讀數(shù)據(jù)。因?yàn)橹挥幸粋€(gè)tcp_s2進(jìn)程在讀消息隊(duì)列,所以就不必對(duì)消息進(jìn)行區(qū)別,有數(shù)據(jù)則讀。再按照消息的sid標(biāo)志從共享內(nèi)存中查出寫套接字,然后將數(shù)據(jù)往該套接字寫。由于該寫套接字是在進(jìn)程tcp_s2內(nèi)創(chuàng)建的,所以只要簡(jiǎn)單地使用套接字的句柄即可訪問該套接字。函數(shù)msgrcv要設(shè)置IPC_NOWAIT標(biāo)志以免在沒有數(shù)據(jù)時(shí)堵塞住,這樣才能繼續(xù)執(zhí)行下面的程序以便及時(shí)地與下一臺(tái)客戶機(jī)建立連接,這也是一個(gè)關(guān)鍵的地方。tcp_s2調(diào)用函數(shù)Server_Send用于數(shù)據(jù)發(fā)送,tcp_s1則調(diào)用函數(shù)Server_Recvice用于數(shù)據(jù)接收。該Se購(gòu)rv宏er孕_S倍en諸d(剪){禽

門in恢t葬s2削,l趟in針kn因,l收in凈kf水2,賺i;樸

群st潤(rùn)ru豎ct看m彎sg根_b帳uf算*軋bu槽f,巷mb圾uf帖;

疑bu煉f=寨&m那bu勒f;遇

父fo仇r(市;;潤(rùn)){鬧

羅li塑nk禁n=送sh亮m_豈in鐮fo壁(0噸,G污ET迷LI鞋NK妨N)貼;

鋪li衫nk唱f2椒=s賺hm冤_i漏nf至o(牧li短nk蔥n,扇GE輪TL狐IN叉KF傘2)青;

駛if罷(l聯(lián)in鏡kf拐2=與=0箭){患

霸if候((昏i=皂co貓nn著ec純t_賊to竊_c申li傅en壩t(明li測(cè)nk伯n,莊2)喪)<折0)碎{

鉤sh芹m_回lo積go例ut獅(l榜in役kn兵);截co友nt簡(jiǎn)in求ue鍛;

此}

相}

膊i=矛ms雖gr格cv通(q谷id解4,儉bu大f,備MS域GS材IZ副E,想MS掘GT上YP壽E,來0x催1f瑞f|棟IP屋C_逃NO渠WA責(zé)IT學(xué));熱

促if仍(i叼==戒-1煎)配co桿nt鞏in酬ue奮;

刷s2寫=s貨hm帥_i鉆nf仿o(置bu我f-村>s描id滑,G泥ET厲S2薯);挺

舒if貓(w職ri六te激(s猾2,川bu植f,旅i+燕1)讓!=全i+免1)精{

耐pe往rr救or冬("帥wr慶it掉e"累);惡cl嚇os恩e(鉤s2振);抱

陽(yáng)}

抗}

覽}函數(shù)connect_to_client(n,type)表示服務(wù)器與第n臺(tái)客戶機(jī)建立第type次連接。該函數(shù)由兩個(gè)子進(jìn)程同時(shí)調(diào)用,分別從共享內(nèi)存中查出客戶機(jī)的IP地址和端口號(hào)后與客戶機(jī)建立連接,建立的連接分別處于各個(gè)子進(jìn)程自己的數(shù)據(jù)空間中,彼此并不相通,所以又要用到共享內(nèi)存,將連接的套接字句柄登記在共享內(nèi)存中,使得與同一臺(tái)客戶機(jī)建立連接的兩個(gè)套接字形成一一對(duì)應(yīng)的關(guān)系。這樣tcp_s2才可根據(jù)數(shù)據(jù)讀入的套接字去查詢出對(duì)應(yīng)的寫套接字,才能正確地將處理結(jié)果發(fā)送給對(duì)應(yīng)的客戶機(jī)。tcp_s1以type=1調(diào)用該函數(shù),使用共享內(nèi)存中第n條記錄的cport1和客戶機(jī)IP地址與客戶機(jī)建立第一個(gè)連接,同時(shí)將這一連接服務(wù)器方的套接字(讀套接字)登記在共享內(nèi)存第n條記錄的s_socket1中,同時(shí)將連接標(biāo)志linkf1置1。tcp_s2以type=2調(diào)用該函數(shù),使用共享內(nèi)存中第n條記錄的cport2和客戶機(jī)IP地址與客戶機(jī)建立第二條連接,同樣也要將這一連接服務(wù)器方的套接字(寫套接字)登記在共享內(nèi)存第n條記錄的s_socket2中,將連接標(biāo)志linkf2置1。因?yàn)樵摵瘮?shù)由兩個(gè)子進(jìn)程同時(shí)調(diào)用,為了保持進(jìn)程間同步,當(dāng)type=2時(shí)必需等到第n條記錄的linkf1為1時(shí)才能繼續(xù)執(zhí)行,即必須先建立第一個(gè)連接才能再建立第二個(gè)連接,這是由客戶機(jī)通信程序決定的,因?yàn)榭蛻魴C(jī)通信程序是先監(jiān)聽并建立起第一個(gè)連接后再監(jiān)聽并建立第二個(gè)連接。子進(jìn)程tcp_s1和tcp_s2通過共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信,在實(shí)際應(yīng)用中總是使用共享內(nèi)存的最后一條記錄。負(fù)②私:(茂59磚91勇,5袋99頭0,攜16猶8.容1.砍1.拾71址)召┌─身──室──丑┐瀉①渣:(知59新91獎(jiǎng),5鍋99星0)壟1咽68拆.1四.1裙.2州1

錘┌─季──肅──夫──軟──社──職──峽┤是守護(hù)設(shè)進(jìn)程驚├果←─英──掃──澇──亮──吊┐┌嗓──膊──擇─┐虧

崗│州│律tc要p_聞s險(xiǎn)│叉初始撞連接尤L0摧│攜│運(yùn)Cl唉ie逼nt對(duì)1箱│岸

鐮│設(shè)共享輸內(nèi)存隊(duì)└窄──刃──鑒─┘味│升├─咐─┬科──啟┤

狹│楊id譜s六1雄li冤nk貼f1受c乳po雨rt缸1壘s2語(yǔ)l存in壞kf臭2唯cp佳or炭t2曲I稀P_涌Ad加dr睛es命s輩f(xié)l裳a(bǔ)g劇│催│5謙99賴9│仇59壺98秒│

仿│鞏┌─界┬─愿─┬贈(zèng)──龜┬─你─┬摟──叉┬─討─┬擊──吼┬─瑞──檔──黃┬─隱┐│如└─譽(yù)─┴卷──左┘

逼│陵│1明│誕1醒2堪│慢1滲│5乒99炒9│挪1姨3鵝│夜1敏│5滾99金8│璃16飯8.毀1.扮1.黨21茂│i省│宋│果16勇8.獻(xiàn)1.詢1.反22郵

奉│致├─股┼─傻─┼罩──藝┼─藍(lán)─┼糞──吹┼─休─┼雖──使┼─非──熱──國(guó)┼─錢┤│泊┌─指──司──賭┐

挖│抓│2魔│欄1娘4娃│爸1床│5賠99子5│外1芳7炸│宿1藝│5撇99宜4│賭16華8.么1.燈1.明22秒│i愁│繡││條C愁li填ne載t伏2捐│

鎮(zhèn)│煩├─損┼─于─┼杰──盆┼─鑄─┼菜──仍┼─牛─┼爪──忙┼─淋──仍──休┼─拳┤│更├─參─┬算──堪┤

燃└→爐┤3婚│迫0/揮22架│0敘/1皂│制59柴91詢│0拆/2鞭3│嬸0/至1腫│5多99穗0│南16溉8.問1.棚1.頑71搜│i絕││鏈│5月99兔5│嫩59離94罵│

角└─觸┴─回─┼直──饑┴┬岡─┴情──辮┼─敞─┴奔┬─蹈┴─胃──特──短┴─賄┘│翻──悲┴─駝─┘饑

沙⑤笛:(堂22傍,1模)↑環(huán)│須↑暑↓耳⑥玻:(軟59編90吼,1謝68壽.1嚴(yán).1貌.7擦1)陡│都16鈔8.咸1.睜1.乓71潤(rùn)

處│務(wù)│左│班└─職──時(shí)──郊┐堅(jiān)│┌尋──咳──掘─┐泉

艇│匠│稠│娘⑧施:(運(yùn)23菠,1橫)露┌─另─┴挽┬─捷┐側(cè)└┤評(píng)C束li守en陪t啟3揭│

炎│級(jí)│效└─烏──防──衣─┤規(guī)│柜13臣│層├─編─┬槍──詢┤

躲│恩↓扭③墳:(粗59串91棒,1桿68議.1岸.1初.7帆1)君│崗?fù)ㄐ沛I├扎─┤例│桶59仙91灑│5譽(yù)99熱0│寧

介│┌昆──艙┴┬蜘─┐陳│城子進(jìn)喘程│驢17補(bǔ)│束└┬歇─┴竭─┬私┘

押└┤鐵│毀12替│饞│t陷cp糕_s納2├教─┤沾│脾L頭2↑倍⑦散

豪│通秤信吐├─捆┤評(píng)│臘│2蓄3├竊──闊─┼爹──門─┘鉆

福│子仗進(jìn)程展│1辯4│盈└托──昌─┴盾─┘喂│附

納│t束cp漢_s防1├閘─┤膛L1逗(關(guān)讀套別接字漆22摧)歐(寫騰套接繳字2飯3)輝│耀

宏│緒│2吉2├摘←─導(dǎo)──三──疑──睬──金──飯──刪──夏──東┘

化└─洞──老┴─脾┘斃④圖1服務(wù)器和客戶機(jī)建立連接的過程罩額這里不必須鑒置套紡接字巡的讀貝取標(biāo)夢(mèng)志位靜O_舞ND廁EL強(qiáng)AY稍,這霸樣在澤讀數(shù)夠據(jù)時(shí)年如果擦沒有革數(shù)據(jù)快可讀掏re酒ad績(jī)函數(shù)劇就不太會(huì)堵葛塞住交,這千是重歲復(fù)型告服務(wù)耀器能席夠?qū)嵵瘳F(xiàn)的啞關(guān)鍵慈。因田為U熱NI銅X系夫統(tǒng)將首套接糟字與券普通首文件姻等同牙處理東,所父以就孟能夠采使用漢設(shè)置戰(zhàn)文件撲標(biāo)志室的函墨數(shù)f毛cn葬t(yī)l勾來處啊理套株接字茅。本in屋t挖co地nn伸ec泳t_緒to專_c榴li滋en盾t(訴n,不ty舒pe葉){涉

府u_廢lo于ng時(shí)c須li銷en夾t_恭ad桂dr增;案/*倦t旗yp鍋e=只1,肥2很*/頑

寇in婦t正s2闊,c驚po左rt蠅,s牙po糧rt總,i鳳;

守if僻(t桃yp滿e=茶=2族){五

凡fo崖r(學(xué);;禽)悼if急(s霉hm凡_i咱nf授o(憶n,筐GE販TL嬌IN賤KF翼1)河==雕1)頭b而re屈ak及;

震}

愿sp脆or傻t=他60洲00鎮(zhèn)-1蟲;s妖2=燥rr俱es甚vp熊or臂t(壘&s伏po齊rt創(chuàng));篇

多cp史or跪t=櫻sh美m(xù)_宜in當(dāng)fo欲(n蠅,G貓ET級(jí)CP趙OR明T1星+t霉yp輛e-醒1)燃;

膜cl掀ie榜nt州_a珠dd給r=小sh松m_棒in爽fo技(n慕,G達(dá)ET羊CA祝DD牲R)漠;

膝pe浮er醬ad犧dr堡_i散n.榮si嚇n_嶄po碰rt躁=h踏to桿ns競(jìng)((觀sh哄or初t)巖cp做or胡t)布;

月pe灑er屬ad匠dr李_i弊n.交si甘n_政ad左dr項(xiàng).s玩_a野dd柴r=譽(yù)cl擠ie狀nt宏_a券dd佳r;但

稱co瓜nn瑞ec是t(己s2候,(兔st避ru恥ct亂s霜oc鋪ka罷dd絡(luò)r綁*)或&p催ee議ra劉dd猾r_爐in拉,s稻iz絮eo姓f(噸pe位er逐ad柄dr暖_i倚n)匙);伸

驗(yàn)fl犧ag們s=米fc無(wú)nt雨l(務(wù)s2大,F哄_G越ET互FL沃,0清);飄

幕fc貸nt粱l(剛s2靜,F穴_S腦ET漂FL把,f并la貝gs復(fù)|O易_N您DE店LA柄Y)奮;

溝if刪(t說yp盈e=肅=1戶)時(shí)i=升sh女m_判up枯da賣te晝(n當(dāng),s矮2,蜘0,唉1,壁0)穗;

摘if均(t殿yp籃e=銹=2束)比i=同sh限m_雙up呼da貪te樹(n箏,0抹,s沖2,創(chuàng)0,袖1)賀;

裕re罰tu箏rn季(i筋);田

封}執(zhí)⑺洗t拒cp斃_c汁在接下收到甜服務(wù)解器的喂兩個(gè)猶連接單后,侮生成雷子進(jìn)霸程t秧cp復(fù)_c滾1調(diào)激用函即數(shù)C劉li紋en迎t_朽Re析ce膨iv少e用協(xié)于接擦收數(shù)遇據(jù),客tc窯p_午c則握調(diào)用滴函數(shù)蔽Cl冠ie貼nt寺_S煮en暫d用羞于發(fā)喬送數(shù)牽據(jù)。醒如果薄函數(shù)藥Cl奮ie術(shù)nt究_R紗ec宰ei煤ve誼從循嫂環(huán)中結(jié)退出午,就舊說明爽服務(wù)笛器通照信軟暑件已固退出月,于希是子圍進(jìn)程憑在退瞞出之扯前要節(jié)先殺群掉父黑進(jìn)程艷。非cp較id伍=g鳥et替pi棋d(聚);朝/怕*示父進(jìn)喝程的塌進(jìn)程亮號(hào)逆*/車

抹if況(f摩or慈k(菊)=畜=0碌){具/喘*畫tc吸p_幸c1誰(shuí)*房/

唉cl長(zhǎng)os夢(mèng)e(商s_嚷w)雞;

邁Cl艱ie切nt菊_R障ec枕ei葉ve修()裝;

擠sp牙ri萌nt丸f(濫cm幅dl灰in牽e,枯"k征il見l涌-9庸%速d"厭,c查pi基d)帳;

蓄sy截st腥em郵(c愁md進(jìn)li舉ne疑);扛

憐}e織ls賢e{可

描cl叛os代e(魚s_盼r)賊;

弓Cl裳ie狀nt獎(jiǎng)_S鮮en譜d(臭);馳

絮}殘客戶謝機(jī)服講務(wù)器屬接收席和發(fā)貴送數(shù)紙據(jù)的慢方法勁獄式數(shù)早據(jù)的留傳送龍過程俯翼?yè)層布硠澐稚?媽├←耕──孩─車服務(wù)幟器盲──閉─→酬┼←館網(wǎng)禍絡(luò)窮→┼版←─猛─膽客戶挎機(jī)禍──任→┤虧

范┌─其─┐欲⑥點(diǎn)┌─井─┐奪⑦每┌─攀─┐奉

包┌→廊┤q繪id選4├鄙→┤筑L葛2痕├→待┤q蓮id口2├著─┐更

翼⑤魔│啊└─冊(cè)─┘賊└尿──椅┘自└─持─┘券↓險(xiǎn)⑧筒

刮┌─翼─┐棟┌端──功┴─壓─┐見┌六──餓→負(fù)┌─樓─┴柜──摸┐漠┌─陶──蝕─┐屑

嗓│傳DB甜├傲←→輛┤s拐_p問ro爐ce付ss坐│啟│分│播c_卵pr黨oc煎e(cuò)s奔s煮├←骨→┤牢終端泄用戶受│

章└─您─┘敘└熄──紋┬─決─┘川└污──暖─顧└─糞─┬遼──鏟┘三└─革──優(yōu)─┘此

界④惜↑刺┌─帶─┐碌┌彈──壘┐起┌─罰─┐父│奔①氣

裁└─坐┤q奇id棵3├原←┤乒L仿1器├←褲┤q踐id裹1├液←┘恨

奪軟件鳳劃分峰:度└─婚─┘旅③旱└─受─┘冠②謀└─準(zhǔn)─┘安

贈(zèng)├←醬─矮s_品pr蔥oc永es奴s謊──領(lǐng)→┼個(gè)←t粉cp春_s胳→┼是←t畜cp萌_c憲→┼掏←材c_肺pr灑oc降es續(xù)s資→┤氣鮮圖2芒數(shù)腸據(jù)在塞客戶獸機(jī)服咽務(wù)器槳之間飯傳遞本的全慕過程饅碌財(cái)其中怨s_搬pr艙oc千es奏s和櫻c_猾pr呢oc網(wǎng)es氣s是吹分別狠運(yùn)行甩在服舍務(wù)器等上的水服務(wù)鉆器業(yè)的務(wù)程案序和籍運(yùn)行跑在客晝戶機(jī)形上的哨客戶坊業(yè)務(wù)迫進(jìn)程環(huán)。q貿(mào)id男3,勿qi造d4姑和q塔id開1,勇qi隊(duì)d2妖是分壁別存森在于惰服務(wù)袖器及漢客戶菌機(jī)上肉的消轎息隊(duì)圾列。斧體特tc仙p_斑s和階tc亡p_寇c是曠分別氧運(yùn)行臣在服襖務(wù)器午和客虎戶機(jī)籃上的批通信譜軟件羅。在探客戶簡(jiǎn)機(jī)和煎服務(wù)捏器之冰間建釘立的籮兩條沖連接噸是L岔1和佩L2泄,其多中L課1專妖用于此客戶騾機(jī)至覆服務(wù)滾器,丈L2筍專用秘于服元?jiǎng)?wù)器攜至客西戶機(jī)方。驕鳥下面川敘述零圖2技中所俱示的社數(shù)據(jù)嫁傳遞鬼過程縣,同顆時(shí)介太紹用獨(dú)于數(shù)腸據(jù)接跨收和晴發(fā)送培的四麻個(gè)函哀數(shù)。孝因?yàn)檠I(yè)務(wù)添程序倦不知晉何時(shí)誓可以核接收爛或發(fā)普送消簽息,界所以酷這四旅個(gè)函游數(shù)都澤存在月一個(gè)秀循環(huán)息不斷任地試泰圖接津收或頸發(fā)送匯數(shù)據(jù)原。表尸示消職息的幻數(shù)據(jù)財(cái)結(jié)構(gòu)僚是s列g(shù)_蝴bu絨f,跪消息秩由消招息類析別m鉛ty昆pe狼及正友文段散md乒at計(jì)a組及成。令派寫正文究段中骨存放擱的數(shù)用據(jù)是討無(wú)結(jié)間構(gòu)的男,必捷須定無(wú)義一椅種數(shù)袋據(jù)結(jié)交構(gòu)(變st徑ru緊ct謊),律用結(jié)浩構(gòu)中騙的各筒變量路對(duì)m謝da暖ta栽進(jìn)行停劃分唉,從斯而使祝md脫at散a中閉的數(shù)施據(jù)可捉以被斤理解憑和使撇用?;钸€可衡將m贈(zèng)da娛ta得前面短的一溪部分葬區(qū)域舍劃出羨來重映新命曾名用王作其室他用炒途。緞消息飼在整讓個(gè)數(shù)歲據(jù)傳被遞的劑過程忍中起右類似?!拜d蝴體”額的作矩用。賺搞#d僅ef暴in衫e郊MS言GS杏IZ心E彈20議0

穴st振ru箱ct章m絹sg億_b正uf獨(dú){

芽lo碎ng傾m毀ty答pe伏;歉/*建消踐息類華別核*/榴

旋lo狼ng器c俗pi臉d;關(guān)/娘*便客戶疤業(yè)務(wù)原進(jìn)程致標(biāo)識(shí)理號(hào)釋*/茂

蜜lo漲ng立s失id兆;繼/*游共豈享內(nèi)兇存記谷錄編查號(hào)桐*/芹

臟lo蔽ng歌m零sg羨id章;莫/*垮消分息編劫號(hào)刊*/魯

粥ch掘ar粱m窄da刪ta匠[M東SG覽SI幣ZE殖-1緣6]述;被/*覆數(shù)拆據(jù)區(qū)便*亦/

球}或①懼客膛戶業(yè)嗓務(wù)程辟序c可_p差ro拘ce擴(kuò)ss察從終蛾端用霞戶接磨收數(shù)冷據(jù),插先存陡放在朋一個(gè)量結(jié)構(gòu)航中,保然后選將該即結(jié)構(gòu)今的內(nèi)窯容依放照一賠定的飽格式燭拷入蹲bu紡f-敬>m哄da拆ta魯中,嫁然后裹將b尺uf譽(yù)以消稅息的必形式輸放入認(rèn)消息冒隊(duì)列筑qi途d1袍中。齡私pi冠dc渡=g悼et忘pi嘉d(院);竹/*閘c辟_p渠ro恭ce觀ss燙的進(jìn)超程號(hào)占*耗/

績(jī)bu椅f-催>m鼠ty誕pe賴=1洲;沉/*繁消肥息類撇別都盾為1爆*循/

套bu擁f-登>s序id拼=0懇;榴/*吊s外id筐在客都戶機(jī)家沒用匹*煮/

買bu度f(wàn)-元>m音sg膊id煉=+優(yōu)+m胸sg迷id法;

恒bu翼f-逃>c袖pi參d=億pi圖dc猜;

予ms歉gs將nd森(q售id描1,憂bu小f,斥MS酸GS怖IZ憐E,窮0)蹤;各②上進(jìn)償程t截cp邪_c奉調(diào)用財(cái)函數(shù)找Cl喂ie大nt犁_S瓦en墨d從初qi硬d1疤中取煤得消頂息,場(chǎng)然后懇往L興1寫慌給服轎務(wù)器析。從屢qi爹d1傷中取劍消息哀時(shí)對(duì)衛(wèi)消息咱并不供予于艷區(qū)別多,凡趁在q睬id希1中扒的消此息都棟要由譯進(jìn)程各tc攀p_健c來椒發(fā)送柱。浙fo牙r(錄;;淡){推/若*華取m拖ty輔pe惱=1野的消胃息明*/斬

頓ms蔽gr登cv淋(q粉id徒1,繼bu顧f,虎MS脹GS武IZ鍬E,控1,旱0)血;

更wr蔽it炮e(衰s_造w,孤bu洞f,杰i+見1)紅;

盈}隙③帳進(jìn)陸程t抄cp虹_s燙1調(diào)灑用函壩數(shù)S是er央ve深r_企Re儲(chǔ)ce蘋iv拿e從霜L1偉讀數(shù)不據(jù)至按bu秧f中鏟,將配bu柿f作帖為消愈息放栗入q肉id隱3中聰。擴(kuò)fo著r(值n=稈1;芬n<顏=l個(gè)in也kn歉;n退++脅){龍

杏s1門=s況hm養(yǎng)_i陣nf泉o(嗚n,緞GE命TS熔1)巨;

奔i=譯re卡ad疑(s歷1,股bu出f,甲MS慈GS贈(zèng)IZ憂E)緞;

槐if譽(yù)(i損==乎-1籍)壘co志nt詢in炸ue南;

欄if師(i鵝==罩0)夠.罩..春/旬*枕判斷歸出客醒戶機(jī)哨已退音出熊*/拍

艘/*匪n堅(jiān)是s昌1在歸共享謠內(nèi)存活登記憑項(xiàng)的脾編號(hào)伏*財(cái)/

業(yè)bu漆f-屈>s興id樹=n墻;

留ms感g(shù)s旱nd郊(q糧id柴3,脆bu背f,伐MS斷GS脈IZ讀E,陵0)開;

乓}率④夫服僻務(wù)器老業(yè)務(wù)處程序莖s_臭pr蟻oc掏es須s從稼消息祥隊(duì)列羞qi安d3殺中接賴收消途息到卡bu載f,信然后昏將b奶uf潮->堪md禍at配a轉(zhuǎn)傷成結(jié)叫構(gòu),易根據(jù)犁結(jié)構(gòu)深的內(nèi)適容對(duì)掛數(shù)據(jù)糞庫(kù)進(jìn)堵行操聲作。獸s_巡pr孔o(hù)c陪es民s處重在一花個(gè)循癢環(huán)中虛,一顆有消薪息就清取走拐去作激消息拿所要芹求的瓶操作籃,對(duì)希消息誕并不噸加以野區(qū)別抬。如乓果沒乞有消麻息函餐數(shù)m誓sg殲rc請(qǐng)v就栗處于借堵塞遮狀態(tài)鑰。吼⑤串s膝_p嘆ro突ce孕ss蘆根據(jù)丸消息偵的內(nèi)起容訪粗問數(shù)五據(jù)庫(kù)信后將住結(jié)果鉛放在遮一個(gè)步結(jié)構(gòu)梨中,斃然后宜將該稼結(jié)構(gòu)醉的內(nèi)版容拷撐到b喘uf逢->怎md就at厚a中蜂,再尤將緩盯沖區(qū)剃bu揪f以燈消息拜的形認(rèn)式放路于消莫息隊(duì)壁列q頭id特4中寧,最邊后s斑_(dá)p精ro行ce爸ss晉又要求繼續(xù)艦循環(huán)截再去品接收年新的恰消息玻。煮fo塊r(吵;;談){弄

乳ms極gr折cv暮(q港id劈3,烈bu脾f,趁MS磚GS餡IZ沈E,丟1,勵(lì)0)蹦;

席..拋.尿..色.

榮/*丹解床釋b截uf全->而md降at羊a的姐內(nèi)容團(tuán),對(duì)贈(zèng)數(shù)據(jù)罰庫(kù)進(jìn)烈行操等作后宏再將脖結(jié)果貌存放登在b僻uf叉->季md爭(zhēng)at洪a中勝*溜/

心bu渡f-桃>m爬ty的pe破=1深;

累ms窗gs哈nd促(q尼id份4,打bu嗓f,肆MS事GS提IZ味E,飲0)嶺;

確}監(jiān)⑥草進(jìn)很程t柏cp信_(tái)s很2調(diào)肝用S蜻er錫ve鞏r_座Se感nd朋從q據(jù)id煩4中則取走斷mt集yp而e=洗1的腹第一密個(gè)消揪息,淘往L鋸2寫還回客射戶機(jī)超。邊f(xié)o老r(耕;;媽){肢

蟲i=節(jié)ms韻gr診cv丈(q創(chuàng)id召4,欺bu睡f,礦MS津GS顯IZ窩E,哥1,壤0)仇;

斤if講(i揮==東-1僚)椒co裙nt新in繼ue蔬;

均s2殊=s找hm渴_i擁nf形o(無(wú)bu禁f-養(yǎng)>s列id卸,G精ET拒S2渠);償

迅wr偏it咽e(勞s2贏,b遙uf輔,i伍+1導(dǎo));聰

指}戚⑦遍進(jìn)針程t泄cp俱_c難1調(diào)梢用函供數(shù)C敢li邁en近t_怖Re烘ce戶iv生e從閑L2脆讀數(shù)挨據(jù)到秧bu際f中費(fèi),將支bu稿f作塵為消中息放車入q痰id藥2中帶。如債果函渡數(shù)r話ea拴d返餅回0偉則表抽示服堅(jiān)務(wù)器承通信族程序幼已經(jīng)保退出其,于牧是就窗中斷薦循環(huán)預(yù)。這臉里必宮須將幟消息抖的類羨別m蠟ty腹pe顏設(shè)置侍為客擺戶業(yè)份務(wù)進(jìn)科程的道進(jìn)程暢號(hào)c晴pi設(shè)d,輔便于掃客戶澡業(yè)務(wù)笨程序代識(shí)別貨。蹲fo駝r(只;;襖){肉

尖i=痰re酒ad販(s遠(yuǎn)_r貌,b揮uf爐,M壁SG歇SI覽ZE胖);辣

懸if歡(i仿==溜0)它{

細(xì)cl隊(duì)os膜e(去s_稠r)盟;r室et病ur摟n(露1)金;

撕}

倉(cāng)bu品f-玻>m箭ty凝pe誼=b既uf王->歉cp此id拼;

觸ms開gs識(shí)nd旁(q希id漆2,脊bu枝f,駁i+慢1,咱0)耗;

懶}熔⑧悟客侵戶業(yè)吧務(wù)程犁序c夫_p拿ro抹ce載ss室從消共息隊(duì)欣列q汪id吧2中饞取走顫mt林yp膚e=像pi麥dc嫌(自瞎身進(jìn)老程號(hào)杜)的石第一嫌個(gè)消賀息放緩入緩勞沖區(qū)雄bu鋒f中叼,再勉將b閘uf促->恒md隨at諸a中籃的數(shù)巨據(jù)劃奧分為玉結(jié)構(gòu)鳥,對(duì)番該結(jié)沒構(gòu)作眼處理象后將勉最終逐結(jié)果刃顯示櫻給用從戶。伸在罰①墊中c春_p孫ro作ce模ss菜將數(shù)六據(jù)發(fā)掙出后徑要在冤什么幟時(shí)候?qū)W到q史id之2中緒去拿話結(jié)果門呢?沙方練法是吸一就菊消息虜發(fā)送忽出去擔(dān)后客選戶業(yè)贏務(wù)程黨序馬氧上就初到q特id柿2中朵去拿俗結(jié)果烈,若怪沒有伸給自蹤己的揪消息槽則堵泊塞住交直到獄消息宗到來矩。這至里程朝序設(shè)夢(mèng)計(jì)成坡在堵刑塞2躲0秒翁后發(fā)沸出時(shí)折鐘警頸報(bào),歸調(diào)用蓄函數(shù)檢ov先er牙ti碎me務(wù)作出材超時(shí)蝶反應(yīng)晶。當(dāng)延時(shí)鐘律警報(bào)盡時(shí)如董果函棗數(shù)m罩sg雞rc剖v正救處于烘堵塞縫狀態(tài)搜也會(huì)拒退出四并返盼回-聞1。搞捆簽這里香就又傍存在曲一個(gè)某問題答,c本_p扒ro劫ce賺ss希在發(fā)疑送一鞭個(gè)新嶺消息喇后可第能先杰接收纏到上結(jié)一個(gè)替因超驢時(shí)而擴(kuò)未能同被接祖收到坡的消柏息,序解決粘這一表問題并最簡(jiǎn)斑單的繼方法繭就是漿發(fā)送礙消息遲之前賄給每清個(gè)消歉息編灣號(hào),嗓如果駱接收苦到的材消息冰的編修號(hào)與肥發(fā)送疑的消擇息的庭編號(hào)贏不同溪?jiǎng)t將世消息涂從消形息隊(duì)?wèi)T列中晴刪除承,或像者將膚消息煙取出鞋后放胸在某架一地傳方另拾行處姓理,徑然后評(píng)繼續(xù)揚(yáng)等待束接收坡正確鵝編號(hào)脂的消話息。姿刪除跨消息賽的方燕法很貢簡(jiǎn)單謝,只疑要從勒消息撒隊(duì)列粘中將弊消息執(zhí)取出罪就可尸以了任。如降果進(jìn)窗程c節(jié)_p液ro砍ce譯ss田被殺巡則遲旨到的吃消息甜由于杜其m獻(xiàn)ty刃pe砍表示猜的c番_p農(nóng)ro活ce殼ss境已經(jīng)墳不在余運(yùn)行囑,所西以將邊會(huì)始郵終存圈在于維消息苦隊(duì)列破中,塵直到秤客戶偉機(jī)關(guān)光機(jī),襲因此認(rèn)在必狼要時(shí)艇也要醉對(duì)這淋些無(wú)確主的傷消息辰作善名后處贈(zèng)理。父煎al涉ar認(rèn)m(耕20踏);疑

勻si艙gn選al濟(jì)(S膏IG嶄AL綱RM蟲,o飾ve細(xì)rt曬im肉e)拒;

優(yōu)fo呢r(暖;;江){太

肅i=祝ms既gr輸cv叉(q森id飄2,比bu伸f,右MS借GS擴(kuò)IZ零E,降pi徹dc圍,0欣);拋

以if撓(i匹==研-1雪)森br漿ea窗k;碌

楊if障(b劇uf轉(zhuǎn)->饒ms散gi穩(wěn)d=燥=m護(hù)sg壯id駕)謙br孩ea贊k;箭

負(fù)}

凡al魄ar犬m(條0)輕;

肢pr動(dòng)in尊tf累("朋%s躺\n醉",澤bu堤f-彩>m即da樓ta枝);膜京ov宋er定ti冬me誦(i綢nt嘗s館ig玻){就

召st切rc均py勤(b江uf釘->土md片at丟a,極"o替ve番rt叼im棄e"暗);澤

迎}圈兩個(gè)連關(guān)鍵攝問題晴的解楚決方辨法璃斑通數(shù)常一劑臺(tái)服云務(wù)器雪要連件接多饅臺(tái)客纏戶機(jī)板,而培每臺(tái)??蛻敉茩C(jī)由腫于支獎(jiǎng)持多麻用戶錢方式慢就會(huì)離同時(shí)般運(yùn)行坑多個(gè)短c_猶pr兄oc仁es期s進(jìn)產(chǎn)程。藏服務(wù)墨器如要何準(zhǔn)作確地顛將消縣息送振給哪錄一臺(tái)香客戶紗機(jī)?擴(kuò)另簽外一顧臺(tái)客斤戶機(jī)糠上運(yùn)挎行的估每一小個(gè)c筑_p污ro蔥ce榜ss展進(jìn)程雪如何奶正確越地獲討取發(fā)既送給英自己每的消約息?音這碧是兩補(bǔ)個(gè)關(guān)紅鍵的弊問題輪。較第一菊個(gè)問姨題在輸前面后已經(jīng)駐講述爐過,勁主要勾是通沾過消館息的揪si此d標(biāo)爛志來憂區(qū)別給的。掏第二昨個(gè)問宅題是罩這樣毯解決攜,在讀第景①垮步時(shí)速c_算pr銀oc細(xì)es漂s進(jìn)虧程先期將自緒身的晉進(jìn)程確號(hào)p社id憑c放鑒在b亂uf討->眉cp狹id糊中,細(xì)該值塞在以贏后的需傳輸并過程酷中保醉持不隙變,識(shí)在第凝⑦掩步再膀?qū)受pi辮d賦膜值給剪消息建類別惱m(xù)t踢yp堡e。鄉(xiāng)這樣愉在第席⑧頸時(shí)c勸_p梨ro進(jìn)ce餃ss洞進(jìn)程援就從兆消息駱隊(duì)列著qi否d2海中取脖走消充息類個(gè)別m牽ty談pe員等于蝶其自寒身進(jìn)波程號(hào)姿pi部dc侵的消律息,愈而不爐會(huì)錯(cuò)太將送飯給同皮一客聽?wèi)魴C(jī)巡別的叫c_腦pr傘oc膀es煙s進(jìn)速程的羽消息鋪拿走達(dá)。(兔圖3觀)淋┌─可──驢──敢──飾──真──論──己─┐悔┌青──棕──主──慰──饅──區(qū)──飛┐

撫│S逼er偷ve竟r蒼┌─讓──斗┤開├─乞──蜜┐席┌─誕──際──輔┐│吹

溉│杠│t代cp尤_s河│淡┌載──析──嗽┤t欲cp金_c朵├剛┐│款c_花pr償oc晃es費(fèi)s2擾││冰

敬│順┌─釣──菠──裁┐虹└─隊(duì)┬─拌┤猜│待├─榨──底┤│糞└─殃──費(fèi)──撥┘│基

澆│恭│s蘇_p朋ro班ce抓ss汁│裳┌─置──濁┴┐申│林│剝┌─畢→┤松tc聾p_灑c1第││股┌─結(jié)──敬──繪┐│霜

籃│踩│服濱務(wù)程邁序闊││際共享勻內(nèi)存推││疏│給│周L粒2├傻─┬截─┘略││便c_簽pr穩(wěn)oc盼es莖s1砌││見

間│腦└─旅┬─淘┬─聾┘└鑼──回─┬劑┘│愈│歸│角│輕↓尖⑦樂│雙└─半──尤┬┬變┘│批

壤│母⑤倚↓張↑棍④由┌放─┴怖─┤碗L1棚│甚│蒜│溫│茫└扛─┐六│德↑吳⑧蒜│

梯│┌佛──捧┘僻│交┌─菜┤t叛cp燕_s紙1├考←─嶺─┘剝│僑│苦│殺榴②傳↑板││頓│舅

喚││府┌─曲─┬糞┼┐呢③甘│喜│踐├←型┐L故1'抓│陜│攪│炎┌─盒─┬金┼┐境①卵││瞞│慈

展││接│q噴id絨3│副├同←┘跡├頌──逢─┤腥│損│腸│魚│衛(wèi)│q低id建1│拳├套←┘否│存│

栗││陣├─涌─┼讓─┤描┌雙┤t堡cp醬_s蝴2├蛛─┼銹──貓─┘鉗│藏│慎├─酬─┼堡─┤紫│屆│曉

觀││忠│q瓣id甩4│繪┼煌→─鋼┘│礎(chǔ)├詞┐│排┌─充──您─┐丈│給││鋸qi哲d2孩│積┼─齒─┘扣│淡

停││蹈└─愛─┴霞┬┘匠⑥兆└遣──鐵─┤結(jié)│└汁┤就││紐│助└─梢─┴盼┬┘煮│違

您│└比──闖──耗┘秘│└撒→┤姐Cl掌ie感nt欺2榆││狡└承──弊──俱┘章Cl裙ie煤nt焰1越│

附└─辛──鮮──剝──遷──截──頌──氧─┘蝕L輸2'槍└─淡──叨─┘籃└─活──劈──蒜──辱──倘─┘奧瞞圖3衫消提息在腦服務(wù)藏器和裳客戶摟機(jī)內(nèi)泥傳送曬的過饅程僚消息珠隊(duì)列現(xiàn)與共賞享內(nèi)厲存捧嬌在平運(yùn)行唉服務(wù)筋器通輛信軟盒件之尾前應(yīng)葵先創(chuàng)三建共組享內(nèi)知存和煌消息蔑隊(duì)列他,創(chuàng)辛建共純享內(nèi)支存的趁方法臭見文滲獻(xiàn)[艷3]抗。本炸文共囑用到辱四個(gè)戒共享盈內(nèi)存錢操作幻函數(shù)概:s秘hm裂_l龍og多in慈(c記po婆rt廳1,魂cp勾or頌t2挖,c價(jià)li突en送t_授ad泄dr灰)在儀共享糠內(nèi)存艱中申鮮請(qǐng)一桂條記團(tuán)錄將擺三個(gè)荒參數(shù)關(guān)登記些其中窗,并院將f散la貌g標(biāo)芳志設(shè)價(jià)為'餐i'醬表示桂已經(jīng)者占用芳,同使時(shí)根靈據(jù)記柄錄的副位置紀(jì)賦值韻給記誕錄編陶號(hào)i銀d??vsh駛m_騎lo茄go染ut宋(i支d)逗將共堆享內(nèi)漲存中倆第i耳d條咱記錄今刪除哈,并退將后每面的聞?dòng)涗浰榍?/p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論