我需要一台能够在客户端上调用功能的服务器。我总是在不同的网络游戏API中使用RPC,但我从未实现过它。
我该怎么做?
我天真的做法是:
将客户端连接到服务器:
服务器
fn update_position_client(){
unique_id = 1;
send.to_client(unique_id);
}
客户端
while recv_messages {
if id == 1
update_position();
}
这是我怎么做的?
答案 0 :(得分:1)
如果您只有一些要发送的消息,并且数据基本已知,则此方法有效。为了更加健壮,您可能希望能够动态添加/删除可以调用的消息,并找出在调用RPC时如何查找要调用的方法。
假设您希望这对用户完全透明,在这种情况下通常会发生的情况是,当发送消息时,RPC库将一直等到有响应回复。假设双向功能,通常发生的是有一个线程侦听数据。如果出现RPC消息,该线程将弄清楚如何处理消息,即在(本地)地址空间中调用什么方法以及使用什么参数调用它。当您发送RPC消息时,您发送消息的线程被阻止(可能带有信号量),直到返回消息返回,此时您的本地线程被解除阻塞并被允许继续。
您可以查看的特定于Linux的RPC库将是DBus。