免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2652 | 回复: 6
打印 上一主题 下一主题

sun rpc的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-22 17:44 |只看该作者 |倒序浏览
10可用积分
自己不大熟悉rpc,但是现在需要维护别人写的程序,在写一个监控程序的时候遇到问题了,希望大家能帮我解决一下。

问题具体表现为:
clnt_create建立rpc连接的时候,当指定PROG NUM的程序没有在server跑起来,就导致client端一直尝试连接直至timeout。
但是当我指定一个server端不存在的PROG NUM试图建立连接的时候,却立刻返回连接失败。

我想知道的是这两次有什么区别?为什么一个要等到超时一个却能立刻返回失败?假如可能的话,提供一个好的监控rpc的server端进程的方法。

谢谢大家。

最佳答案

查看完整内容

Linux内核的sunrpc实现, RPC和prog是作为一个整体的, 并不是说rpc单独起, prog再单独起. 在代码中, prog调用rpc的函数, 接收请求.rpc程序的主循环一般结构是:while(1){ request = svc_recv(); svc_process(request);}根本不存在: XX(楼主所指的某个东西)起了, 但prog没起.

论坛徽章:
0
2 [报告]
发表于 2009-09-22 17:44 |只看该作者
原帖由 leicc 于 2009-9-22 19:37 发表

我的理解是服务器里会为所有的prog起一个(或一组)进程,这个(组)进程监听111端口的请求,根据各个请求的PROG NUM来区分调用的是哪个PROG,不只对否?

假如我理解的没问题的话,那这个PROG的程序没起跟 ...

Linux内核的sunrpc实现, RPC和prog是作为一个整体的, 并不是说rpc单独起, prog再单独起. 在代码中, prog调用rpc的函数, 接收请求.

rpc程序的主循环一般结构是:

while(1){
    request = svc_recv();
    svc_process(request);
}

根本不存在: XX(楼主所指的某个东西)起了, 但prog没起.

论坛徽章:
0
3 [报告]
发表于 2009-09-22 18:39 |只看该作者
原帖由 leicc 于 2009-9-22 17:44 发表
我想知道的是这两次有什么区别?为什么一个要等到超时一个却能立刻返回失败?

前者是网络错误, 客户端会多尝试几次. 如果prog不存在, 服务器端会返回出错代码, 是业务错误, 客户端会立即告诉使用者(人).

论坛徽章:
0
4 [报告]
发表于 2009-09-22 19:37 |只看该作者
原帖由 ideawu 于 2009-9-22 18:39 发表

前者是网络错误, 客户端会多尝试几次. 如果prog不存在, 服务器端会返回出错代码, 是业务错误, 客户端会立即告诉使用者(人).

我的理解是服务器里会为所有的prog起一个(或一组)进程,这个(组)进程监听111端口的请求,根据各个请求的PROG NUM来区分调用的是哪个PROG,不只对否?

假如我理解的没问题的话,那这个PROG的程序没起跟指定一个无效的PROG NUM应该是一回事?

还请再帮解惑一下

论坛徽章:
0
5 [报告]
发表于 2009-09-23 09:33 |只看该作者
客户端需要知道怎么把函数的参数pack过去,怎么把返回值unpack回来。对于不清楚怎么pack和unpack自然会出错的吧。

论坛徽章:
0
6 [报告]
发表于 2009-09-23 09:40 |只看该作者
原帖由 pagx 于 2009-9-23 09:33 发表
客户端需要知道怎么把函数的参数pack过去,怎么把返回值unpack回来。对于不清楚怎么pack和unpack自然会出错的吧。

现在就是在建立连接的时候问题,还没涉及到函数调用

论坛徽章:
0
7 [报告]
发表于 2009-09-23 17:08 |只看该作者
原帖由 ideawu 于 2009-9-22 17:44 发表

Linux内核的sunrpc实现, RPC和prog是作为一个整体的, 并不是说rpc单独起, prog再单独起. 在代码中, prog调用rpc的函数, 接收请求.

rpc程序的主循环一般结构是:

while(1){
    request = svc_recv();
...

这个问题似乎还是不大理解,不过暂时不在这纠缠了,绕过去把现在问题解决了先。谢谢热心解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP