【问题标题】:Is there a way to deal with Unix sockets in Perl 6?有没有办法在 Perl 6 中处理 Unix 套接字?
【发布时间】:2018-02-23 14:31:16
【问题描述】:

我想使用 Unix 套接字与 mpv 通信,但 Perl 6 不提供任何高级接口来实现这一点。所以我想我可以为此写一个小模块,开始深入挖掘,找到了IO::Socket::INET的实现,并了解了NQP操作nqp::socketnqp::connect

但是,我在NQP operations list 中找不到任何提及,它们似乎与传统的 BSD 套接字 API 截然不同。因此我想问:这两个能够创建一个 Unix 套接字并连接到它吗?如果是这样,怎么做?还是有其他方法?

【问题讨论】:

    标签: sockets io raku nqp


    【解决方案1】:

    我认为目前最好的方法是使用 NativeCall 接口来调用 C 级函数。有一些旧的设计文档建议考虑使用 IO::Socket::UNIX。但它还没有被纳入语言规范的当代版本。

    【讨论】:

    • 谢谢,我通过 Inline::Perl5 使用 Perl 5 中的 IO::Socket::UNIX 解决了这个问题,这就像魅力一样。我只是想知道是否有本地解决方案。
    • 我一直在计划添加管道和 unix 套接字,但这需要 moar hacking(这不是很简单)。
    • @Ramillies 很高兴这对你来说足够好。 C API 上的 NativeCall 将是更原生的解决方案。 C 函数看起来几乎与 Perl 5 API 相同,所以可能不会太可怕。
    • @MattOates:好吧,我正在考虑这个问题,但我找不到如何将原始文件描述符转换为IO::Handle 或类似的东西(也许甚至不可能)。所以我使用了 Perl 5,因为我懒得使用 BSD 套接字 API 从头开始​​重新实现所有东西,我不太喜欢 :-)。
    • 你指的设计文档很可能是我去年写的this grant proposal,虽然我直到最近才开始工作,但被接受了。如果一切按计划进行,到今年年底,您将能够在 Perl 6 中本地使用 UNIX 套接字(尽管它最终可能不会像我建议的那样设计,但我需要提出一个问题在我达到授权阶段后解决问题的回购协议上)。
    猜你喜欢
    • 2012-04-11
    • 2017-06-24
    • 1970-01-01
    • 2010-10-25
    • 2017-01-09
    • 2013-02-03
    • 2021-08-18
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多