Как указать локальный интерфейс связи с сокетом многоадресной рассылки в Haskell? - PullRequest
3 голосов
/ 24 мая 2011

Я пробовал пакет Network.Multicast, и он работает, однако я не могу найти способ указать локальный интерфейс связи ("bond0" или "bond1" и т. Д.) К сокету многоадресной рассылки.Я знаю, что в CI нужно использовать ioctl для преобразования связи в struct sockaddr_in, а затем передать эту структуру в параметр IP_MULTICAST_IF в семействе setsockopt семейства IPPROTO_IP, но я не уверен, как это сделать в Haskell.Может кто-нибудь помочь с этим?Спасибо!

1 Ответ

1 голос
/ 24 мая 2011

В источнике многоадресной сети [1] я вижу вызов для установки ip_multicast_if в функции setInterface.Он всегда вызывается с результатом inet_addr в строке хоста, которую вы передаете.

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

Я думаю, что вам нужно написать свои собственные привязки ffi иФункция делать то, что вы хотите.Но это должно быть просто сделать, основываясь на коде в сетевой многоадресной рассылке, и я уверен, что если вы сделаете это, это будет долгожданный патч для библиотеки.

...