Linux 如何在Haskell中为多播套接字指定本地绑定接口?

Linux 如何在Haskell中为多播套接字指定本地绑定接口?,linux,sockets,networking,haskell,multicast,Linux,Sockets,Networking,Haskell,Multicast,我尝试过Network.Multicast包,它确实可以工作,但是,我找不到一种方法来为多播套接字指定一个本地绑定接口(“bond0”或“bond1”等)。我知道在C语言中,我需要使用ioctl将绑定转换为结构sockaddr__in,然后将此结构馈送到setsockopt的IPPROTO_IP系列下的IP_MULTICAST_IF选项,但我不确定在Haskell中如何做到这一点。有人能帮忙吗?谢谢 在网络多播源[1]中,我看到了在setInterface函数中设置ip_multicast_if

我尝试过Network.Multicast包,它确实可以工作,但是,我找不到一种方法来为多播套接字指定一个本地绑定接口(“bond0”或“bond1”等)。我知道在C语言中,我需要使用ioctl将绑定转换为结构sockaddr__in,然后将此结构馈送到setsockopt的IPPROTO_IP系列下的IP_MULTICAST_IF选项,但我不确定在Haskell中如何做到这一点。有人能帮忙吗?谢谢

在网络多播源[1]中,我看到了在setInterface函数中设置ip_multicast_if的调用。它总是以传入的主机字符串上的
inet\u addr
结果调用

[1]


我认为您需要编写自己的ffi绑定和函数来完成您想要的任务。但是,基于网络多播中的代码,这样做应该很简单,而且我相信,一旦您这样做,它将是一个受欢迎的库补丁。

谢谢!看起来inet_addr是C API inet_addr的一个相对简单的导入,但是要实现“bond0”或其他类似的结果,需要几个C API调用。我将尝试看看如何为其创建ffi绑定。