• <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>
            隨筆-341  評論-2670  文章-0  trackbacks-0
                開始設(shè)計一個對稱的通訊框架了。這個框架要求所有client的電腦上有一組host threads。host threads可以在另一個程序里面。有了host之后,client就可以跟遠(yuǎn)程或者本機(jī)的程序通訊了。client可以做的事情有:與host連接與斷開,指定一個遠(yuǎn)程的client并發(fā)送信息,通知host可以不必繼續(xù)維護(hù)到某client的連接,查詢某個ip和端口下面的所有client。每一次通訊的時候,client都必須給出ip\port\name來,而不是獲取一個連接然后使用。鑒于client和host未必在同一個程序上,獲得連接然后使用不是很好。

                因此就有了如下的設(shè)計。host通過socket與其他地方的host通訊,client與host通過named pipe聯(lián)系。client與client的信息通過兩個或更多的host傳遞。到了這里,就有必要指定一下協(xié)議了。

                首先是client-host。client-host發(fā)的消息的格式是:Type:BYTE , NameLen:BYTE , Name:CHAR[ ] , MsgLen:INT , Msg:CHAR[ ]。這5部分串在一起成為一個完整的消息通過named pipe傳遞。Type定義如下:

                client發(fā)給host:
                    0:CONNECT_TO_HOST , Name=ignore , Message=client name
                    1:DISCONNECT_TO_HOST , Name=ignore , Message=ignore
                    2:COMMUNICATE , Name="ip\port\client name" , Message=?
                    3:REQUEST_LIST , Name="ip\port\*" , Message=ignore
                    4:COMMUNICATE_FINISH , Name="ip\port\client name" , Message=ignore
                host發(fā)給client:
                    0:ERROR , Name=ignore , Message=?
                    1:DISCONNECT_TO_CLIENT , Name=ignore , Message=ignore
                    2:COMMUNICATE , Name="ip\port\client name" , Message=?
                    3:RECEIVE_LIST , Name="ip\host\*" , Message="name1\name2\...."

                其次是host與host之間的消息。消息的格式是Type:BYTE , SourceLen:BYTE , SourceName:CHAR[ ] , DestLen:BYTE , DestName:CHAR[ ] , MsgLen:INT , Msg=CHAR[ ]。跟client-host一樣,也是串在一起成為一個完整的消息的。Type定義如下:

                消息:(HELLO在不同的狀態(tài)下有不同的意義)
                    0:ERROR , Source=ignore , Dest=ignore , Message=?
                    1:HELLO , Source=ignore , Dest=ignore , Message=?
                    2:HELLO_RESPONSE , Source=ignore , Dest=ignore , Message=HELLO的消息內(nèi)容反轉(zhuǎn)
                    3:DISCONNECT , Source=ignore , Dest=ignore , Message=ignore
                    4:COMMUNICATE , Source="client name" , Dest="client name" , Message=?
                    5:REQUEST_LIST , Source=ignore , Dest=ignore , Message=ignore
                    6:RECEIVE_LIST , Source=ignore , Dest=ignore , Message="name1\name2\...."

                因?yàn)閏lient每一次發(fā)消息都要填上地址,因此host可以自行決定要不要將某些socket斷開。同理,COMMUNICATE_FINISH也是可以不發(fā)的,這只是為了資源管理的靈活性而設(shè)置的。這個東西就暫時命名為Vczh Messenger吧。Vczh Messenger將提供兩套類庫。第一套用于建立host,第二套用于建立client。這樣的話,一個程序可以決定跟其他程序共享host或者是自己給自己建立host。client將使用事件驅(qū)動模型。配合vl::system::synchronize命名空間下的一些組件可以很容易將事件驅(qū)動模型修改為其他各種各樣的模型。

                Vczh Messenger在邏輯上是無連接無順序的通訊框架,用于為進(jìn)一步的remote object access服務(wù)。
            posted on 2008-08-02 06:47 陳梓瀚(vczh) 閱讀(1801) 評論(4)  編輯 收藏 引用 所屬分類: C++

            評論:
            # re: Vczh Messenger 2008-08-02 06:57 | Lnn
            強(qiáng)!  回復(fù)  更多評論
              
            # re: Vczh Messenger 2008-08-02 07:39 | 空明流轉(zhuǎn)
            都不知道你現(xiàn)在在做些啥。。。  回復(fù)  更多評論
              
            # re: Vczh Messenger 2008-08-02 09:05 | ronliu
            很好的思路,
            覺得沒有必要區(qū)分client和host。client之間發(fā)消息,需要通過各自的host來中轉(zhuǎn),中轉(zhuǎn)的次數(shù)太多,增加了復(fù)雜度。
            一臺主機(jī)上有一個host對應(yīng)很多個client的情況我想不多,即使有,也只是少數(shù)的服務(wù)器型的機(jī)器。
            另外,能否說明一下你的這個框架預(yù)計的應(yīng)用場景呢?  回復(fù)  更多評論
              
            # re: Vczh Messenger 2008-08-02 21:39 | 陳梓瀚(vczh)
            我想在c++上再現(xiàn)Windows Communication Foundation的『模式』,并加強(qiáng)。  回復(fù)  更多評論
              
            色偷偷888欧美精品久久久| WWW婷婷AV久久久影片| 国产精品久久新婚兰兰| 久久AV高潮AV无码AV| 国产国产成人精品久久| 国产精品成人99久久久久| 亚洲&#228;v永久无码精品天堂久久| 少妇人妻综合久久中文字幕| 久久A级毛片免费观看| 久久精品成人影院| 久久久久99精品成人片直播| 青草久久久国产线免观| 国内精品久久久久影院一蜜桃 | 久久天天躁狠狠躁夜夜不卡| 久久久久久亚洲精品成人| 亚洲国产成人久久一区WWW| 91精品国产综合久久婷婷| 99久久精品国产一区二区| 久久激情五月丁香伊人| 久久夜色精品国产欧美乱| 久久精品日日躁夜夜躁欧美| 久久久久久毛片免费看| 国产99久久久国产精免费| 色综合久久88色综合天天| 久久久久久综合一区中文字幕| 色综合久久无码五十路人妻| 噜噜噜色噜噜噜久久| 欧美久久一区二区三区| 久久人人爽人人爽人人片AV麻豆 | 亚洲欧洲日产国码无码久久99| 老司机午夜网站国内精品久久久久久久久| 国产精品久久久久久久久鸭| 久久久久成人精品无码中文字幕| 日日躁夜夜躁狠狠久久AV| 青青草原精品99久久精品66| 久久香蕉超碰97国产精品| 久久发布国产伦子伦精品| 中文字幕亚洲综合久久| 久久国产成人精品国产成人亚洲| 久久综合狠狠综合久久97色| 亚洲国产一成久久精品国产成人综合|