• <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>
            posts - 58,  comments - 75,  trackbacks - 0

            ??? ACE_INET_Addr類,包裝了網絡地址
            ??? ACE_SOCK_Connector類,扮演主動連接角色,發起通訊連接。連接到遠端的服務。
            ??? ACE_SOCK_Acceptor類,扮演被動連接角色,等待連接。等待遠端客戶的請求。
            ??? ACE_SOCK_Stream類,扮演數據通訊角色,發送和接收數據。完成客戶與服務之間的通訊。
            ???
            ??? 利用ACE庫來開發網絡通訊程序是很簡單的,一個基本程序只用到以上提到的幾個類,就
            可以完成一個基于客戶端、服務器端模型的網絡應用的開發。開發者無需了解Socket在不同平
            臺上的實現,記憶眾多并相互關聯的Socket APIs。

            ??? 一下以一個Hello World程序為演示。
            ???
            ??? 客戶端程序。發送一個Hello World到遠端的服務器,并接收服務器返回的信息,將信息
            打印在屏幕上。

            #include <iostream>
            #include <string>

            #include <ace/ACE.h>
            #include <ace/INET_Addr.h>
            #include <ace/SOCK_Connector.h>
            #include <ace/SOCK_Stream.h>

            int main( int argc, char* argv[] )
            {
            ?ACE::init();//初始化ACE庫,在windows下一定要

            ?std::string str = "hello world";

            ?//設置服務器地址
            ?//第一個參數是端口,第二個是ip地址,也可以是域名。
            ?//可以先定義一個地址對象,再用ACE_INET_Addr的set函數來設定。
            ?//地址的配置很多,具體的參照文檔
            ?ACE_INET_Addr peer_addr( 5050, "127.0.0.1" );
            ?ACE_SOCK_Stream peer_stream;//定義一個通訊隊形

            ?ACE_SOCK_Connector peer_connector;//定義一個主動連接對象
            ?peer_connector.connect( peer_stream, peer_addr );//發起一個連接

            ?peer_stream.send( str.c_str(), str.length() );//發送數據到服務器

            ?str.erase();
            ?str.resize( sizeof( "hello world" ) );
            ?peer_stream.recv( (void*)str.c_str(), str.length() );//接收來自服務器的信息

            ?std::cout << "from server message : " << str << std::endl;

            ??? ACE::fini();
            ?return 0;
            }

            ??? 服務器端代碼。接收一個遠端的連接,將接收到的信息打印在屏幕上,并將接收到的信
            息返回給客戶端。
            #include <iostream>
            #include <string>

            #include <ace/ACE.h>
            #include <ace/SOCK_Acceptor.h>
            #include <ace/SOCK_Stream.h>

            int main( int argc, char* argv[] )
            {
            ?ACE::init();

            ?std::string str;
            ?str.resize( sizeof( "hello world" ) );

            ?//設置服務器地址
            ?ACE_INET_Addr peer_addr( 5050, "127.0.0.1" );

            ?ACE_SOCK_Stream peer_stream;
            ?
            ?//創建被動連接角色對象
            ?ACE_SOCK_Acceptor peer_acceptor;
            ?//開啟被動連接對象,將對象綁定到一個地址上
            ?peer_acceptor.open( peer_addr );

            ?//等待連接
            ?peer_acceptor.accept( peer_stream );

            ?//數據通訊
            ?peer_stream.recv( (void*)str.c_str(), str.length() );
            ?std::cout << "from client message : " << str << std::endl;
            ?peer_stream.send( str.c_str(), str.length() );

            ?ACE::fini();
            ?return 0;
            }
            ××××以上代碼需要ACE庫才能運轉××××
            ???
            ??? 利用ACE編程的基本框架。
            ??? 客戶端
            ??? 1 創建地址對象。(ACE_INET_Addr)
            ??? 2 創建主動連接對象。(ACE_SOCK_Connector)
            ??? 3 創建數據通訊對象。(ACE_SOCK_Stream)
            ??? 4 設置服務器地址。(ACE_INET_Addr::set)
            ??? 5 將數據通訊對象和地址作為參數傳給主動連接對象,發起主動連接(ACE_SOCK_Connector::connect)
            ??? 6 利用通訊對象接收和發送數據。(ACE_SOCK_Stream::recv和ACE_SOCK_Stream::send)
            ???
            ??? 服務器端
            ??? 1 創建地址對象。(ACE_INET_Addr)
            ??? 2 創建被動連接對象。(ACE_SOCK_Connector)
            ??? 3 創建數據通訊對象。(ACE_SOCK_Stream)
            ??? 4 設置服務器地址。(ACE_INET_Addr::set)
            ??? 5 將地址作為參數傳給被動連接對象,啟動接收(ACE_SOCK_Acceptor::open)
            ??? 6 將數據通訊對象傳給被動連接對象,啟動接收,接受連接(ACE_SOCK_Connector::accept)
            ??? 7 利用通訊對象接收和發送數據。(ACE_SOCK_Stream::recv和ACE_SOCK_Stream::send)

            posted on 2007-02-25 19:30 walkspeed 閱讀(12197) 評論(10)  編輯 收藏 引用 所屬分類: ACE Farmeworks

            FeedBack:
            # re: ACE中網絡通訊編程基本架構
            2007-12-03 22:04 | rolltech
            據說ACE很難,所以一直沒學,閣下寫的這篇文章很容易看懂,這個client/server程序在我的FreeBSD系統上運行的沒絲毫差錯,問問:ACE到底難不難啊?  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構[未登錄]
            2007-12-11 10:31 | walkspeed
            重點在于對網絡程序的client和server的理解。

            client是個什么東西,要做什么。
            server是個什么東西,要做什么。

            再去看ACE就好明白了。

            ACE給了很多模式。要去理解。

            ACE并不是一個單純的網絡庫。其實是個系統級的c++API。如果做網絡程序,現關注網絡部份就可以了。

            最好現了解socket編程,并寫幾個小程序練手  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構
            2007-12-11 19:39 | rolltech
            謝謝了,真有些躍躍欲試了,兩年前就聽說過ACE了,那時聽到一句話:是否學習ACE要慎重考慮,對某些人值得......所以被這話嚇著,也許ACE并不難  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構[未登錄]
            2007-12-11 21:32 | eXile
            這篇文章說的還是socket編程的模型。
            使用ACE,主要用的還是Reactor或Proacoter框架,到那時,還認為ACE不難的,那都是高手。。。  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構
            2008-03-06 03:51 | rolltech
            樓主能不能用python寫個這樣的模型啊?我很菜的  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構
            2009-11-19 09:16 | csuwqz
            有沒有非阻塞模式的啊?  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構
            2010-04-14 16:27 | archxm
            這只是一個包裝外觀,哪稱的上什么基本框架!  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構
            2012-12-21 15:23 | 曾剛
            難于上青天@rolltech
              回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構
            2013-10-10 12:05 | yangy
            實現windows作為client, linux作為Server的c/s通信,網絡該怎樣配置?ip地址不能指定為127.0.0.1了吧?  回復  更多評論
              
            # re: ACE中網絡通訊編程基本架構
            2013-10-10 12:12 | yangy
            @yangy這兩段程序,我都在windows下或者都在linux下運行,通信都是可以的,但一個在linux下,一個在windows下,兩者就連接不上了,樓主給解答下嗎?麻煩您了!@yangy
              回復  更多評論
              

            <2007年2月>
            28293031123
            45678910
            11121314151617
            18192021222324
            25262728123
            45678910

            常用鏈接

            留言簿(4)

            隨筆分類(64)

            隨筆檔案(58)

            文章分類(3)

            文章檔案(3)

            相冊

            收藏夾(9)

            C++零碎

            好友

            搜索

            •  

            積分與排名

            • 積分 - 160837
            • 排名 - 163

            最新評論

            閱讀排行榜

            評論排行榜

            大香网伊人久久综合网2020| 久久精品国产秦先生| 99久久精品国产综合一区| 国内精品久久久久久久涩爱| 日韩欧美亚洲综合久久 | 欧美粉嫩小泬久久久久久久| 中文字幕无码久久人妻| 国产精品免费久久久久影院| 国产香蕉久久精品综合网| 国产精品一久久香蕉国产线看观看| 国产免费福利体检区久久| 国产69精品久久久久观看软件| 精品国际久久久久999波多野| 久久综合精品国产一区二区三区 | 国产成人久久精品一区二区三区| 国产精品青草久久久久福利99| 久久综合精品国产二区无码| 婷婷久久综合| 亚洲国产成人久久一区WWW| 精品一区二区久久| 午夜久久久久久禁播电影| 久久久SS麻豆欧美国产日韩| 久久精品中文无码资源站| 久久精品国产99久久香蕉| 香港aa三级久久三级老师2021国产三级精品三级在 | 99久久精品九九亚洲精品| 色妞色综合久久夜夜| 亚洲国产成人久久一区久久| 久久精品国产99久久丝袜| 久久99精品久久久久久久不卡| 久久精品国产99国产精品亚洲| 婷婷久久五月天| 亚洲AV成人无码久久精品老人| 欧美粉嫩小泬久久久久久久 | 欧美亚洲日本久久精品| 国产伊人久久| 久久毛片免费看一区二区三区| 久久亚洲电影| 2021最新久久久视精品爱| 亚洲性久久久影院| 亚洲国产精品久久电影欧美|