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

Just enjoy programming

linux RPC 測試(轉載)

轉自:
http://www.justwinit.cn/post/3960/


RPC是glibc提供的函數參數/返回值封裝服務, 并將封裝結果通過網絡傳到服務器.
RPC服務端首先要啟動portmapper服務.
測試一個簡單的RPC傳輸示例, 先定義一個模板文件test.x

program TESTPROG{
        version VERSION{
                int int_echo(int)=1;
                int get_str_len(string)=2;
                int add ( int, int ) = 3;
        }=1;
}=30000;
內含3個函數, 注意其中一個有2個參數.
然后可以用rpcgen生成一個Makefile:

rpcgen -a -N test.x

這會生成Makefile, 客戶端和服務端的程序, 和函數示例.
我們手工修改一下Makefile

# This is a template Makefile generated by rpcgen
# Parameters
CLIENT = test_client
SERVER = test_server
SOURCES_CLNT.c =
SOURCES_CLNT.h =
SOURCES_SVC.c =
SOURCES_SVC.h =
SOURCES.x = test.x
TARGETS_SVC.c = test_svc.c test_server.c test_xdr.c
TARGETS_CLNT.c = test_clnt.c test_client.c test_xdr.c
TARGETS = test.h test_xdr.c test_clnt.c test_svc.c
OBJECTS_CLNT = $(SOURCES_CLNT.c:%.c=%.o) $(TARGETS_CLNT.c:%.c=%.o)
OBJECTS_SVC = $(SOURCES_SVC.c:%.c=%.o) $(TARGETS_SVC.c:%.c=%.o)
# Compiler flags
CFLAGS += -g -pipe
LDLIBS += -lnsl
RPCGENFLAGS = -N
# Targets
all : $(CLIENT) $(SERVER)
$(TARGETS) : $(SOURCES.x)
        rpcgen $(RPCGENFLAGS) $(SOURCES.x)
$(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) $(TARGETS_CLNT.c)
$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) $(TARGETS_SVC.c)
$(CLIENT) : $(OBJECTS_CLNT)
        $(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) $(LDLIBS)
$(SERVER) : $(OBJECTS_SVC)
        $(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS)
clean:
         $(RM) core $(TARGETS) $(OBJECTS_CLNT) $(OBJECTS_SVC) $(CLIENT) $(SERVER)

修改test_server.c服務端的處理函數, 提供3種服務:

/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "test.h"
int *
int_echo_1_svc(int arg1,  struct svc_req *rqstp)
{
        static int  result;
        //echo.
        result=arg1;
        printf("[RPC1] source=%d, echo=%d\n", arg1, result);
        return &result;
}
int *
get_str_len_1_svc(char *arg1,  struct svc_req *rqstp)
{
        static int  result;
        //get strlen.
        result=strlen(arg1);
        printf("[PRC2] str=%s, len=%d\n", arg1, result);
        return &result;
}
int *
add_1_svc(int arg1, int arg2,  struct svc_req *rqstp)
{
        static int  result;
        result=arg1+arg2;
        printf("[RPC3] %d+%d=%d\n", arg1, arg2, result);
        return &result;
}

客戶端test_client.c, 調用這三種服務:

/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "test.h"
void
testprog_1(char *host)
{
        CLIENT *clnt;
        int  *result_1;
        int int_echo_1_arg1=55;
        int  *result_2;
        char *get_str_len_1_arg1="Hello, world";
        int  *result_3;
        int add_1_arg1=10;
        int add_1_arg2=20;
        clnt = clnt_create (host, TESTPROG, VERSION, "udp");
        if (clnt == NULL) {
                clnt_pcreateerror (host);
                exit (1);
        }
        result_1 = int_echo_1(int_echo_1_arg1, clnt);
        if (result_1 == (int *) NULL) {
                clnt_perror (clnt, "call failed");
        }
        else
                printf("[PRC1] echo %d, source %d\n", *result_1,
                        int_echo_1_arg1);
        result_2 = get_str_len_1(get_str_len_1_arg1, clnt);
        if (result_2 == (int *) NULL) {
                clnt_perror (clnt, "call failed");
        }
        else
                printf("[RPC2] return %d, should %d\n", *result_2,
                        strlen(get_str_len_1_arg1));
        result_3 = add_1(add_1_arg1, add_1_arg2, clnt);
        if (result_3 == (int *) NULL) {
                clnt_perror (clnt, "call failed");
        }
        else
                printf("[PRC3] %d+%d=%d\n", add_1_arg1, add_1_arg2,
                        *result_3);
        clnt_destroy (clnt);
}
OK, 可以調用make了.
生成可執行程序test_server和test_client.
我們啟動./test_server, 用rpcinfo看看:

$rpcinfo -p 127.0.0.1
program vers proto port
100000 2 tcp 111 portmapper
30000 1 udp 36307
30000 1 tcp 34883
Bingo! 啟動成功.

再開個終端, 嘗試一下調用.

./test_client 127.0.0.1
[PRC1] echo 55, source 55
[RPC2] return 12, should 12
[PRC3] 10+20=30

正是我們期望的.

Add By:Jackxiang
make -f Makefile.test

posted on 2011-08-07 16:44 周強 閱讀(1202) 評論(0)  編輯 收藏 引用 所屬分類: linux網絡編程

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区导航| 久久精品人人做人人爽电影蜜月| 亚洲欧美综合国产精品一区| 亚洲专区欧美专区| av不卡在线看| 欧美日韩一区二区在线视频| 亚洲一区二区三区四区中文 | 99视频国产精品免费观看| 国产日韩欧美一区二区| 亚洲精品在线免费观看视频| 国产综合视频| 香港久久久电影| 久久久精品网| av72成人在线| 亚洲砖区区免费| 国模吧视频一区| 欧美午夜激情小视频| 欧美三级日本三级少妇99| 欧美成人福利视频| 老鸭窝毛片一区二区三区| 国产精品视频网站| 久久久免费观看视频| 亚洲——在线| 麻豆成人小视频| 亚洲综合成人婷婷小说| 欧美激情91| 六月天综合网| 欧美在线首页| 欧美成人午夜激情| 久久综合九色综合网站| 制服丝袜亚洲播放| 亚洲深爱激情| 久久只精品国产| 日韩视频在线观看一区二区| 好男人免费精品视频| 久久久久久一区| 毛片精品免费在线观看| 欧美日本一区二区三区| 老司机免费视频久久| 久久精品国产一区二区三区| 欧美日韩国产精品一区二区亚洲| 久久激情综合| 欧美久久电影| 欧美午夜免费影院| 久久精品系列| 欧美乱妇高清无乱码| 国内精品写真在线观看| 99天天综合性| 欧美亚洲一区二区在线| 欧美韩日视频| 玖玖在线精品| 亚洲国产婷婷| 亚洲乱码日产精品bd| 正在播放亚洲一区| 欧美激情在线| 欧美一区二区三区视频在线| 久久精品国产精品亚洲综合| 久久视频精品在线| 亚洲精品资源| 欧美日韩hd| 99热在线精品观看| 久久久久久成人| 午夜精品久久久久久久99樱桃 | 极品裸体白嫩激情啪啪国产精品| 国内精品视频一区| 亚洲影音一区| 蜜桃av噜噜一区二区三区| 午夜亚洲一区| 欧美日韩喷水| 亚洲精品影院| 亚洲一级特黄| 在线观看的日韩av| 日韩一级精品| 久久婷婷国产麻豆91天堂| aa成人免费视频| 亚洲欧美激情精品一区二区| 一区二区三区在线免费视频| 久久精品一本| 美脚丝袜一区二区三区在线观看| 亚洲电影在线看| 乱码第一页成人| 亚洲人成欧美中文字幕| 亚洲欧洲午夜| 一本久道久久综合中文字幕| 好吊日精品视频| 亚洲人成绝费网站色www| 性8sex亚洲区入口| 激情成人中文字幕| 亚洲天堂男人| 亚洲午夜久久久| 性欧美办公室18xxxxhd| 午夜国产精品影院在线观看| 午夜视频一区| 亚洲午夜精品国产| 久久青草久久| 久久国产日韩| 久久综合国产精品台湾中文娱乐网| 亚洲电影天堂av| 亚洲毛片av在线| 亚洲视频免费在线观看| 欧美另类女人| 亚洲每日更新| 欧美亚洲综合另类| 国产精品亚洲欧美| 性欧美xxxx大乳国产app| 亚洲一区二区在| 欧美国产视频在线观看| 暖暖成人免费视频| 国产精品婷婷| 久久国产精品久久久| 一本色道久久综合精品竹菊| 亚洲福利视频一区| 午夜视频一区二区| 欧美一区二区在线看| 欧美激情91| 亚洲国产欧美一区二区三区久久| 国内欧美视频一区二区| 亚洲电影免费在线| 亚洲一区二区欧美| 欧美日韩在线直播| 久久久久久久国产| 91久久精品日日躁夜夜躁欧美| 欧美日韩久久| 久久中文字幕导航| 一区二区日韩伦理片| 欧美乱大交xxxxx| 欧美与黑人午夜性猛交久久久| 久久久777| 亚洲永久免费视频| 美女诱惑一区| 午夜精品一区二区三区在线| 狠狠色丁香婷婷综合久久片| 欧美精品在线一区| 欧美69视频| 亚洲精品麻豆| 久久精品夜色噜噜亚洲a∨| 亚洲视频一二区| 久久久久88色偷偷免费| 亚洲视频免费在线观看| 免费不卡在线观看| 一区二区三区www| 国产精品久久久久影院亚瑟| 亚洲欧洲日产国产网站| 亚洲风情在线资源站| 久久影视三级福利片| 亚洲精品一级| 99精品欧美一区| 亚洲美女精品久久| 亚洲男女自偷自拍| 久久精品国产精品亚洲| 久久久久久久欧美精品| 久久视频精品在线| 久热re这里精品视频在线6| 校园激情久久| 欧美成人按摩| 夜夜爽www精品| 久久久久免费观看| 国产精品伦一区| 久久免费视频网| 欧美久久久久久蜜桃| 国产精品久久| 在线视频你懂得一区| 在线中文字幕不卡| 国产精品毛片va一区二区三区| 国产日韩欧美黄色| 免费亚洲电影在线观看| 欧美日韩另类字幕中文| 激情文学一区| 欧美大片免费观看在线观看网站推荐 | 久久伊人精品天天| 欧美日韩国产高清| 一本色道精品久久一区二区三区| 久久精品中文字幕一区二区三区| 欧美国产日韩免费| 中文高清一区| 国产伦精品一区二区三区在线观看 | 一本综合精品| 中文亚洲免费| 久久全国免费视频| 国语精品一区| 久久综合给合久久狠狠色| av成人天堂| 国产综合亚洲精品一区二| 午夜在线精品| 久久爱www久久做| 亚洲五月婷婷| 国产乱子伦一区二区三区国色天香 | 午夜在线视频观看日韩17c| 久久理论片午夜琪琪电影网| 日韩一二在线观看| 国一区二区在线观看| 久久久亚洲综合| 午夜视频一区在线观看| 国产情人综合久久777777| 99伊人成综合| 亚洲深夜av| 99精品国产在热久久婷婷| 亚洲高清av| 久久久亚洲高清| 一区二区三区欧美视频|