我正在尝试创建一个分布式系统,其中客户端将一些信息发送到一个服务器,服务器接收消息并将其转发到所有其他服务器。系统使用RPC和XDR作为它的接口定义语言。
我得到了服务器接收消息的部分。但我无法将消息转发到其他服务器。即使我设法转发消息,它也只会在客户端也向该特定服务器发送消息时打印,即与该消息一起发送。
例如:如果我向服务器 A 发送消息Hello,并且服务器 A 也应该将其转发到服务器 B。服务器 B 得到消息并且不打印它。相反,当我向服务器 B 发送消息Hi时,它会打印HELLOHI。这意味着 B 收到了消息,但没有完全打印出来。
关于为什么会发生这种情况的任何建议?我正在使用rpc_broadcast
将从客户端收到的消息广播到其他服务器。
Edit1:这是我在所有服务器收到广播时尝试调用的方法。我只是想在那里打印一个静态的 HELLO THERE 看看它是否在执行我的逻辑之前工作。
int *
pass_details_1_svc (xaction_args *argp, struct svc_req *rqstp)
{
int *i;
printf("HELLO THERE");
return i;
}
这是我在收到来自客户端的消息时执行的 rpc_broadcast 调用:
xaction_args 股份公司;ag.passMsg="你好";
rpc_broadcast(其他,TICKER_PROG,TICKER_VERS,PASS_DETAILS,(xdrproc_t)xdr_xaction_args,&ag);
passMsg
是 XDR 文件中定义的结构中的一个变量。