青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eXile 的專欄

[T] ICE實例學習:Let's Chat! 節(jié)譯 (1)

節(jié)譯,原文地址:http://www.zeroc.com/articles/index.html

需求

      1)一個典型的聊天室應用,使用客戶器/服務器架構(gòu),客戶發(fā)送消息到中心服務器,然后,消息發(fā)送給其它客戶。
      2)盡量減少服務器管理,甚至可以不需要。
      3)通信必須安全,通過公共網(wǎng)絡(luò)時必須要保護個人隱私。
      4)當客戶端和服務器有防火墻保護時也能正常運行,客戶端不用修改它的網(wǎng)絡(luò)或者防火墻設(shè)置。
      5)客戶端可以在各種平臺上利用多種語言實現(xiàn),比如說利用Web瀏覽器作為客戶端。
      6)客戶端可能網(wǎng)絡(luò)帶寬有限,所以應該盡量減少網(wǎng)絡(luò)流量。
      只支持單個聊天室。(多個聊天室只是代碼多了點,并沒有增加任何難度)。

設(shè)計

      在本文中,將會演示多種客戶端的設(shè)計和實現(xiàn)。包括:
      1)C++命令行客戶端;
      2)JAVA SWing GUI客戶端;
      3).NET WPF客戶端;
      4)PHP網(wǎng)頁客戶端;
      5)Silverlight 網(wǎng)頁客戶端;
     
     注意,對于ICE3.3, PHP和Ruby只提供了客戶端的Run Time。我們在考慮當連接的客戶如何從服務器獲得消息時,必須要想到這一點。對于消息發(fā)布,有兩種通信模型:
     1)推模型:略
     2)拉模型:略
     推模型比較簡單,容易實現(xiàn),我們的Chat 客戶端中,C++,Java, .Net, Silverlight(0.3)都使用該模型。PHP客戶端使用拉模型。

推模型定義
     每個客戶端中提供一個 ChatRoomCallback 類型的ICE對象到服務器。當發(fā)生事件時,服務器調(diào)用該對象的操作通知客戶。SLICE定義如下:
// Slice 
module Chat 

// Implemented by clients 
interface ChatRoomCallback 

    [
"ami"void init(Ice::StringSeq users); 
    [
"ami"void join(long timestamp, string name); 
    [
"ami"void leave(long timestamp, string name); 
    [
"ami"void send(long timestamp, string name, string message); 
}; 
};

     1)當用戶首次連接到聊天室時,服務器調(diào)用 init 操作.     users參數(shù)告訴用戶目前連接到聊天室的所有用戶信息。
     2)有用戶連接到聊天室時,服務器調(diào)用 join 操作。
     3)有用戶斷開連接時,服務器調(diào)用 leave 操作。
     4)有用戶發(fā)送消息時,服務器調(diào)用 send 操作。
     注意設(shè)計使用異步事件。元數(shù)據(jù)指令 ["ami"] 標明服務器異步調(diào)用回調(diào)操作。當客戶端行為異常時,這對服務器是一個保護:客戶端可能長時間阻塞,服務器調(diào)用期間不會因此失去對線程的控制。

與防火墻協(xié)作
      略......

      Glacer2是ICE針對這種情況的預建的解決方案,它扮演一個服務器前端。Glacer2具有以下特征:
      1)支持會話概念,API支持認證機制,可實現(xiàn)自定義的會話創(chuàng)建和認證。
      2)單個Glacer2可進行任意數(shù)量的服務器和客戶端轉(zhuǎn)發(fā)。服務器只要有一個端口接受外來連接,而不用管具體服務器個數(shù)。
     3)對于具有防火墻的客戶端,服務器也可調(diào)用其提供的回調(diào)。

     因為 Glacer2會話概念是面向連接的,只有當客戶端同Glacer2的連接打開時,更精確的說,同Glacer2保持一個激活的會話時,服務器才可以對客戶進行回調(diào)。換句話說,當客戶端同Glacer2失去連接,Glacer2自動銷毀會話。為了阻止客戶端到Glacer2的連接被意外關(guān)閉,客戶端必須要禁用ACM(Automic Connection Management, 自動連接管理)。而且,Glacer2通常對長時間空閑的會話設(shè)置超時。當聊天室長時間沒有動作時,為了防止Glacer2銷毀會話,客戶端必須周期性進行激活,比如,調(diào)用 ice_ping, 來對Glacer2的會話超時進行重置。

     Chat客戶端通過服務器提供的 ChatSession接口來和服務器通信。 ChatSession 從Glacer2::Session派生。
// Slice 
module Chat 

exception InvalidMessageException 

    
string reason; 
}; 
 
interface ChatSession extends Glacier2::Session 

    
void setCallback(ChatRoomCallback* cb); 
    [
"ami"long send(string message) throws InvalidMessageException; 
}; 
};

      這就是推模型,Chat客戶端調(diào)用ChatSession的send來發(fā)送消息,服務器調(diào)用每一個客戶的ChatRoomCallback的send操作進行分發(fā)。

拉模型定義

TODO


posted on 2009-03-25 23:52 eXile 閱讀(2250) 評論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)開發(fā)ICE

導航

<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

統(tǒng)計

常用鏈接

留言簿(18)

隨筆分類

隨筆檔案

服務器編程

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久本道综合色狠狠五月| 日韩一区二区久久| 欧美三级视频在线| 久久久久久夜| 亚洲综合首页| 亚洲免费精彩视频| 蜜桃伊人久久| 欧美一级专区| 欧美日韩少妇| 看片网站欧美日韩| 亚洲免费网站| 亚洲国产欧美一区二区三区同亚洲| 一区二区三区高清不卡| 亚洲日本欧美天堂| 亚洲国产精品成人一区二区| 国产亚洲欧美一区| 欧美视频一区二区三区四区| 欧美国产日韩亚洲一区| 老鸭窝91久久精品色噜噜导演| 久久激情网站| 久久国产视频网| 亚洲欧美精品中文字幕在线| 亚洲一本视频| 亚洲网站在线| 亚洲一区二区三区中文字幕| 亚洲在线免费| 一区二区三区四区五区精品| 日韩亚洲欧美一区| 亚洲精品日韩在线观看| 亚洲国产一区二区三区高清| 怡红院精品视频| 黄色精品网站| 黄色成人av| 激情av一区| 亚洲成色777777女色窝| 在线成人黄色| 亚洲激情视频在线观看| 亚洲欧洲日本国产| 亚洲人成网在线播放| 亚洲精品国产拍免费91在线| 日韩视频在线观看国产| 日韩亚洲欧美一区二区三区| 日韩午夜视频在线观看| 一区二区三区波多野结衣在线观看| 亚洲美洲欧洲综合国产一区| 夜夜嗨av一区二区三区| 亚洲一级特黄| 欧美在线视频a| 久久午夜电影| 欧美夫妇交换俱乐部在线观看| 欧美大片一区二区| 亚洲精品欧美激情| 亚洲小说春色综合另类电影| 久久国产精品久久久久久电车| 久久av一区二区| 久久综合伊人| 欧美日韩美女在线| 国产欧美一区二区三区国产幕精品| 国产婷婷色一区二区三区四区| 激情欧美国产欧美| 日韩视频免费在线观看| 午夜在线观看欧美| 久久影视精品| 亚洲日本va午夜在线影院| 亚洲视频电影在线| 久久久久成人精品| 欧美日韩1区2区3区| 国产欧美va欧美va香蕉在| 亚洲成人在线网站| 亚洲一二三区精品| 久久久亚洲人| 亚洲精品视频一区| 午夜精品视频网站| 欧美激情精品久久久久久蜜臀 | 久久精品国产99精品国产亚洲性色 | 久久一区二区精品| 亚洲肉体裸体xxxx137| 亚洲一区在线播放| 久热精品视频| 国产精品美女久久福利网站| 亚洲电影观看| 午夜欧美大片免费观看| 欧美 日韩 国产在线| 亚洲欧洲日产国产网站| 欧美亚洲综合在线| 欧美精品乱码久久久久久按摩| 国产欧美精品日韩精品| 亚洲国产成人久久综合| 亚洲影视在线播放| 欧美电影免费观看高清完整版| 亚洲视频一区二区| 欧美成人精精品一区二区频| 国产一区二区欧美| 一本色道综合亚洲| 麻豆成人精品| 亚洲尤物在线| 欧美日韩高清在线观看| 亚洲高清免费视频| 欧美综合国产精品久久丁香| 亚洲精品三级| 久久综合九色欧美综合狠狠| 国产精品任我爽爆在线播放| 亚洲区欧美区| 蜜臀av一级做a爰片久久| 亚洲综合另类| 国产精品第三页| 9色国产精品| 欧美电影在线观看| 久久国产精品一区二区三区| 国产精品久久久久久影院8一贰佰| 亚洲精品欧洲精品| 欧美大胆成人| 久久一区二区三区av| 国产在线播精品第三| 欧美一区二区啪啪| 亚洲一区一卡| 国产精品v欧美精品v日本精品动漫 | 久久爱www| 亚洲一区影院| 国产精品美女午夜av| 亚洲一二三区视频在线观看| 亚洲人被黑人高潮完整版| 蜜臀av在线播放一区二区三区| 国内精品福利| 久久夜色精品国产亚洲aⅴ | 欧美专区亚洲专区| 亚洲欧美在线看| 国产精品一页| 久久国产精品99久久久久久老狼| 亚洲专区免费| 国产欧美二区| 久久久久久夜精品精品免费| 欧美一级午夜免费电影| 国产在线不卡| 嫩草影视亚洲| 免费在线亚洲欧美| 亚洲精品一区二区三区福利| 亚洲第一网站| 欧美日韩国产成人高清视频| 亚洲午夜极品| 亚洲综合精品自拍| 国产在线国偷精品产拍免费yy| 久久久久久久久久久久久9999 | 黄色成人免费观看| 免费毛片一区二区三区久久久| 久久精品99国产精品日本 | 亚洲电影第三页| 欧美伦理视频网站| 午夜国产一区| 欧美一区激情| 亚洲激情网站| 99综合在线| 国产亚洲精品v| 欧美肥婆bbw| 欧美日韩精品三区| 久久av在线| 久久伊人一区二区| 99一区二区| 午夜激情久久久| 亚洲二区在线| 99re8这里有精品热视频免费| 欧美亚州在线观看| 久久久久91| 欧美精品入口| 久久国产精品72免费观看| 美女成人午夜| 午夜亚洲性色视频| 久热精品视频在线观看一区| 一区二区三区 在线观看视| 亚洲在线视频一区| 91久久精品网| 亚洲天堂男人| 亚洲激情网站免费观看| 亚洲私人影院| 亚洲东热激情| 国产精品99久久久久久www| 尤物99国产成人精品视频| 日韩午夜av在线| 一区二区在线观看av| 日韩午夜三级在线| 一区二区三区在线免费观看| 妖精视频成人观看www| 在线观看亚洲精品| 中国亚洲黄色| 亚洲精品男同| 久久精品五月婷婷| 亚洲一区二区三区精品在线观看| 久久久久国内| 午夜精品国产精品大乳美女| 欧美jizz19性欧美| 久久久激情视频| 国产精品激情| 最新高清无码专区| 在线精品观看| 午夜一区二区三区在线观看| 国产精品99久久久久久久女警| 久久亚洲国产精品日日av夜夜| 欧美在线播放一区二区| 欧美三级午夜理伦三级中文幕| 欧美福利视频一区|