【问题标题】:How to specify a local bond interface to multicast socket in Haskell?如何在 Haskell 中为多播套接字指定本地绑定接口?
【发布时间】:2011-08-31 22:59:08
【问题描述】:

我已经尝试过 Network.Multicast 包,它确实有效,但是,我找不到指定本地绑定接口(“bond0”或“bond1”等)到多播套接字的方法。我知道在 C 中我需要使用 ioctl 将键转换为结构 sockaddr_in,然后将此结构提供给 setsockopt 的 IPPROTO_IP 系列下的 IP_MULTICAST_IF 选项,但我不确定如何在 Haskell 中执行此操作。有人能帮忙吗?谢谢!

【问题讨论】:

    标签: linux sockets networking haskell multicast


    【解决方案1】:

    在 network-multicast [1] 的源代码中,我看到在 setInterface 函数中设置 ip_multicast_if 的调用。它总是在您传入的主机字符串上以inet_addr 的结果调用。

    [1]http://hackage.haskell.org/packages/archive/network-multicast/0.0.6/doc/html/src/Network-Multicast.html

    我想你需要编写自己的 ffi 绑定和函数来做你想做的事。但是根据网络多播中的代码,这样做应该很简单,而且我相信一旦你这样做了,它将是库的一个受欢迎的补丁。

    【讨论】:

    • 谢谢!看起来 inet_addr 是 C API inet_addr 的一个相对简单的导入,但要为“bond0”实现相同的结果,需要多次 C API 调用。我会尝试看看如何为此创建一个 ffi 绑定。
    猜你喜欢
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多