【问题标题】:Interprocess Communication over Network in C++C++ 网络中的进程间通信
【发布时间】:2011-04-17 09:58:55
【问题描述】:

我正在使用 C++ 开发游戏的服务器端,其中多个服务器需要使用发布者/订阅者模式相互通信。每个服务器订阅不同服务器上的一些事件。所有服务器都位于同一网络上,因此延迟和数据包丢失应该非常低。服务器间的通信应该尽可能高效,因为每秒会发生许多事件。

有没有我可以用于此目的的库?

非常感谢任何帮助

【问题讨论】:

  • 你的操作系统和编译器是什么?
  • 服务器是基于Linux的,我们使用gcc来编译它

标签: c++ network-programming ipc


【解决方案1】:

您应该能够将Boost.ASIO(用于异步套接字 I/O)与Boost.Signals(用于观察者模式)或Boost.Signals2(Boost.Signals 的线程安全版本)结合起来以实现您想要的。

有一个简单的例子展示了它是如何工作的here。请注意,这在 Boost.Signal 上使用了一个包装器,但您明白了。

【讨论】:

    【解决方案2】:

    您实际上是在谈论套接字库。这与 IPC 不同,IPC 指的是同一台计算机上的两个或多个进程之间的进程间通信——而不是通过网络。网络通信需要套接字编程,因此您可能需要一个好的、高性能的套接字库。 Boost.ASIO 是一个非常好的 C++ 可移植套接字库,它同时提供 TCP 和 UDP 套接字。

    【讨论】:

    • 实际上,IPC 可以同时表示:同一台计算机上的多个进程的通信,或者通过网络连接的一台多台计算机上的通信。尽管如此,TCP/IP 套接字是首选的工具。
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多