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

隨筆 - 60, 文章 - 0, 評論 - 197, 引用 - 0
數據加載中……

Win32 RPC 編程(三)

我們在上一節的基礎上,討論如何實現異步的 RPC 調用。前兩節演示的函數調用都是同步的,即調用函數 Hello() 時,
客戶端將阻塞住直到服務端的 Hello() 函數返回。如果服務端函數需要進行一些費時的操作,例如復雜的計算、查詢,
客戶端只能一直阻塞在那里。這種情況下,我們可以使用異步的 RPC 提高客戶端的性能。

異步的RPC是通過配置文件(.acf)來啟用的:
--------------------------------------------
Hello.acf:

[  
       implicit_handle(handle_t HelloWorld_Binding)  
]  

interface  HelloWorld
{
       [async] Hello();  // 增加了 [async] 表明這是異步調用
}

 
原來的接口 HelloWorld 有兩個方法,Hello() 和 Shutdown(),Shutdown() 我們仍然讓它是同步調用,所以在.acf文
件中不用列出。IDL 接口文件還是可以不用修改。


服務端的代碼 server.c 中的 Hello() 要改成下面的樣子:
------------------------------------------------------
void Hello(PRPC_ASYNC_STATE rpcAsyncHandle, const unsigned char * psz)
{
     // 模擬一個長時間的操作
     printf("Sleep 5 seconds...\n");
     Sleep(5000);
 

     printf("%s\n", psz);
     // 表明調用已經完成

     RpcAsyncCompleteCall(rpcAsyncHandle, NULL);
}

服務端的其它代碼不用修改。
 

客戶端client.c中的調用方式也要換:
---------------------------------
int main(int argc, char * argv[])
{
     // 前面都相同
     ...
   
     // 下面是調用服務端的函數
     RpcTryExcept
     {

         if ( _stricmp(argv[1], "SHUTDOWN") == 0 )
         {
              Shutdown();
         }
         else
         {
              // 初始化異步調用
              RPC_ASYNC_STATE async;
              RpcAsyncInitializeHandle( &async, sizeof(async) );
              async.UserInfo = NULL;
              async.NotificationType = RpcNotificationTypeNone;

              // 本函數能立即返回
              Hello( &async, (unsigned char*)argv[1]);

              // 查詢調用的狀態
              while ( RpcAsyncGetCallStatus(&async) == RPC_S_ASYNC_CALL_PENDING )
              {
                   printf("Call Hello() pending, wait 1s...\n");
                   Sleep(1000);
              }

              // 通知調用已經完成
              RpcAsyncCompleteCall( &async, NULL );
         }
     }
     RpcExcept(1)
     {
         printf( "RPC Exception %d\n", RpcExceptionCode() );
     }
     RpcEndExcept

   
     // 后面都相同
     ...
}

這樣客戶端就實現了異步調用!

示例下載
 

posted on 2008-04-29 11:22 Normandy 閱讀(2804) 評論(1)  編輯 收藏 引用 所屬分類: Networking

評論

# re: Win32 RPC 編程(三)  回復  更多評論   

我最近正在Windows下開發RPC服務器與客戶端程序,現在只是前期熟悉試驗階段,網上的hello world程序已經可以正常運行了,但是我現在想在服務器端返回二進制流,IDL中定義的接口如下:

char* helloworld([in,string]const char* psz)

在服務器端實現代碼如下:
unsigned char* helloworld(const unsigned char* psz)
{
unsigned char* pTest = new unsigned char[4] ;
int nTest = 100 ;
memcpy(pTtest,&nTest,4) ;

return pTtest ;
}

客戶端調用方式
unsigned char* pTest = helloworld((unsigned char*)"Hello Server!");
int nTest ;
memcpy(&nTest ,pTest,4) ;

nTest得到的很大的一個數,pTest的內容也不對,請問大家應該怎樣定義接口文件,怎樣才能得到正確的返回值呢?謝謝了
2013-09-04 19:43 | forest21000
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美色偷偷大香| 亚洲茄子视频| 亚洲经典在线看| 亚洲国产欧美一区| 亚洲精品在线免费| 欧美大成色www永久网站婷| 欧美成人精品h版在线观看| 久久国产精品72免费观看| 久久av最新网址| 久久这里只有| 欧美人交a欧美精品| 欧美肉体xxxx裸体137大胆| 国产精品视频男人的天堂| 国内外成人免费激情在线视频网站 | 亚洲欧美日韩视频一区| 性8sex亚洲区入口| 老牛国产精品一区的观看方式| 欧美jizzhd精品欧美喷水 | 欧美成人国产| 一道本一区二区| 久久久精品动漫| 欧美日韩一区二区在线观看| 国产日韩一级二级三级| 亚洲国产精品va在线看黑人| 亚洲欧美国产毛片在线| 欧美高清视频一区| 亚洲影视九九影院在线观看| 久久精品天堂| 国产精品免费在线| 亚洲三级影院| 美日韩精品视频免费看| 亚洲一区二区四区| 欧美激情1区| 国模精品娜娜一二三区| 亚洲视频中文字幕| 欧美国产免费| 久久精品日产第一区二区| 国产精品xxxav免费视频| 亚洲国产电影| 欧美阿v一级看视频| 亚洲专区一区二区三区| 欧美成人国产| 亚洲精美视频| 欧美激情在线免费观看| 久久9热精品视频| 欧美午夜性色大片在线观看| 亚洲精品一区二区三区在线观看| 久久伊人免费视频| 久久精品1区| 国产日韩欧美一区在线| 亚洲免费一区二区| 99精品视频一区| 欧美日韩国产在线看| 91久久在线| 亚洲成人在线免费| 国产精品乱码久久久久久| 亚洲黄色av一区| 欧美成人日韩| 麻豆精品精品国产自在97香蕉| 国产区欧美区日韩区| 先锋影院在线亚洲| 亚洲综合激情| 国产日韩欧美在线视频观看| 羞羞漫画18久久大片| 亚洲一区二区网站| 国产色视频一区| 麻豆九一精品爱看视频在线观看免费 | 亚洲尤物在线视频观看| 亚洲日本欧美日韩高观看| 欧美国产成人在线| 99在线精品视频| 一区二区三区色| 国产麻豆视频精品| 美国十次了思思久久精品导航| 每日更新成人在线视频| 99精品视频免费| 亚洲视频在线二区| 好吊妞这里只有精品| 亚洲国产91精品在线观看| 欧美精品在线免费播放| 亚洲视频在线观看一区| 欧美一级在线亚洲天堂| 亚洲国产欧美日韩精品| 亚洲精品综合久久中文字幕| 国产目拍亚洲精品99久久精品| 久久婷婷影院| 欧美激情亚洲自拍| 欧美在线三区| 欧美成人精品在线观看| 午夜天堂精品久久久久| 久久亚洲捆绑美女| 宅男噜噜噜66一区二区66| 亚洲一级免费视频| 在线国产精品一区| 亚洲精选久久| 国内精品久久久久久久影视蜜臀| 亚洲国产成人精品久久| 国产精品亚洲一区| 日韩视频二区| 亚洲人成在线观看一区二区| 亚洲欧美高清| 夜夜嗨av色综合久久久综合网| 亚洲综合视频在线| 99国产精品视频免费观看| 久久精品噜噜噜成人av农村| 在线视频你懂得一区 | 欧美日韩亚洲综合一区| 久久亚洲二区| 国产精品一区二区久久国产| 亚洲国产精品一区二区第四页av | 亚洲综合色在线| 亚洲激情电影中文字幕| 制服诱惑一区二区| 日韩午夜电影| 蜜臀91精品一区二区三区| 欧美在线在线| 国产精品视频精品视频| 亚洲激情在线激情| 1024成人网色www| 香蕉成人伊视频在线观看| 亚洲午夜激情网站| 欧美日本一区二区三区 | 久久永久免费| 国产色综合网| 一本色道久久综合亚洲精品不卡 | 揄拍成人国产精品视频| 亚洲一区二区三区视频播放| 亚洲毛片一区| 欧美xxx成人| 欧美韩日一区二区三区| 亚洲高清激情| 久久久久综合网| 麻豆精品一区二区av白丝在线| 国产欧美一区二区三区国产幕精品 | 欧美激情精品久久久久久| 久色婷婷小香蕉久久| 国产精品永久入口久久久| 亚洲尤物精选| 欧美一区二区日韩一区二区| 国产精品日韩电影| 亚洲欧美成人一区二区在线电影| 亚洲女同精品视频| 国产精品观看| 亚洲欧美日本视频在线观看| 久久国产精品久久久| 国产视频一区三区| 欧美在线电影| 快射av在线播放一区| 亚洲国产99| 欧美—级a级欧美特级ar全黄| 亚洲三级国产| 午夜精品久久久久久久蜜桃app| 欧美视频不卡| 性久久久久久久| 乱中年女人伦av一区二区| 在线免费观看成人网| 久久综合激情| 一区二区三区久久精品| 久久久精品欧美丰满| 亚洲日本无吗高清不卡| 国产精品扒开腿做爽爽爽视频| 亚洲欧美日韩国产综合精品二区| 久久国产精品99精品国产| 亚洲国产精品一区二区尤物区| 美女91精品| 亚洲一区二区成人在线观看| 久久福利电影| 亚洲精品自在久久| 午夜日韩激情| 久久视频一区| 91久久视频| 欧美在线视频免费播放| 亚洲国产另类精品专区| 国产精品福利网| 久久精品水蜜桃av综合天堂| 亚洲人成网站在线观看播放| 欧美亚洲在线| 亚洲日本中文字幕区| 欧美国产一区二区三区激情无套| 亚洲美女av在线播放| 国产精品尤物福利片在线观看| 久久天天狠狠| 亚洲欧洲99久久| 亚洲精品国产精品久久清纯直播| 久久国产精品一区二区三区四区| 在线观看一区| 欧美日韩在线视频一区二区| 久久久999国产| 亚洲欧美成人在线| 日韩小视频在线观看| 美国十次成人| 午夜欧美精品久久久久久久| 一区二区三区产品免费精品久久75| 激情久久一区| 欧美深夜影院| 欧美人与禽性xxxxx杂性| 久久综合九色99| 久久精品人人做人人爽电影蜜月| 亚洲视频成人| 亚洲精品少妇|