我正在寻找libcppa Actor 的示例代码,该 Actor 在端口上监听新的连接,然后生成新的 Actor 来处理新的连接。

任何帮助,将不胜感激。

谢谢

最佳答案

您是否希望 Actor 直接从套接字读取/写入套接字?尚未实现适当的基于参与者的IO抽象,但这是libcppa下一版本(敬请期待)的计划功能。如果只想通过网络分发角色,请查看publish/remote_actor函数对。

/编辑:

现在,您可以使用libcppa的某些实用程序来启动并运行阻止版本:

using namespace cppa;
spawn<detached>([] {
    auto ack = network::ipv4_acceptor::create(4242);
    for (;;) {
        auto spair = ack->accept_connection();
        spawn<detached>([spair] {
            // spair.first is the input stream
            // spair.second is the output stream
            // please see http://neverlord.github.io/libcppa/namespacecppa_1_1network.html
        });
    }
);

这不能很好地扩展,因为您将为每个连接创建一个线程,并且它不是很优雅。另外,很难在通过套接字收到的消息和从其他参与者收到的消息之间进行多路复用。一个更优雅的解决方案正在酝酿之中。 ;)

10-08 04:51