0

我需要有一个能够在客户端调用函数的服务器。我总是在不同的网络游戏 API 中使用 RPC,但我从来没有自己实现过。

我该怎么做?

我天真的方法是:

将客户端连接到服务器:

服务器

fn update_position_client(){
 unique_id = 1;
 send.to_client(unique_id);
}

客户

while recv_messages {
  if id == 1
    update_position();
}

我会这样做吗?

4

1 回答 1

1

如果您只有几条要发送的消息,并且数据基本已知,则此方法有效。为了更加健壮,您希望能够动态添加/删除可以调用的消息,并弄清楚如何在调用 RPC 时查找要调用的方法。

假设您希望这对用户完全透明,在这种情况下通常发生的情况是,当发送消息时,RPC 库将等待,直到有响应返回。假设具有双向功能,通常情况下只有一个线程来监听数据。如果一个 RPC 消息进来,这个线程将弄清楚如何处理该消息,即在您的(本地)地址空间中调用什么方法以及使用什么参数来调用它。当您发送 RPC 消息时,您发送消息的线程被阻塞(可能带有信号量),直到返回消息返回,此时您的本地线程被解除阻塞并允许继续。

您可以查看的特定于 Linux 的 RPC 库是 DBus。

于 2013-09-13T21:09:59.703 回答