2011-05-24 73 views
3

我已經試過Network.Multicast包,但它確實有效,但是,我找不到指定本地綁定接口(「bond0」或「bond1」等)到組播套接字的方法。我知道在C中我需要使用ioctl將綁定轉換爲struct sockaddr_in,然後將此結構提供給IPPROTO_IP系列的setsockopt下的IP_MULTICAST_IF選項,但我不確定如何在Haskell中執行此操作。有人能幫忙嗎?謝謝!如何在Haskell中指定組播套接字的本地綁定接口?

回答

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綁定和功能做你想做什麼。但基於網絡多播中的代碼,這應該很簡單,我相信一旦你這樣做了,它將成爲圖書館的一個受歡迎的補丁。

+0

謝謝!它看起來像inet_addr是C API inet_addr的相對直接導入,但爲了實現「bond0」的相同結果,或者需要幾個C API調用。我將嘗試看看如何爲此創建一個ffi綁定。 – diyu01 2011-05-24 16:53:06

相關問題