Popularity
3.6
Declining
Activity
0.0
Stable
2
2
2

Monthly Downloads: 10
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Tags: Network    

dnssd alternatives and similar packages

Based on the "Networking" category.
Alternatively, view dnssd alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of dnssd or a related project?

Add another 'Networking' Package

README

DNS Service Discovery Haskell Bindings

dnssd provides Haskell bindings to Multicast DNS (mDNS) and DNS Service Discovery (DNS-SD). Also known as Bonjour or Avahi.

WARNING: There is currently a bug that causes the C code to get stuck in a loop when used in a large network in GHCi. This is an experimental library.

Install

cabal install dnssd

On Linux you need the libavahi-compat-libdnssd-dev package installed as well.

Example

slide-simple.hs is a simple example of displaying jpegs to an Apple TV.

To find all local web servers.

import Network.DNSSD
main = do
  servers <- dnsBrowse "_http._tcp"
  putStrLn . show $ servers

This should look something like this:

[
  SRecord {deviceName = "Maxwell\8217s Server",
           serviceName = "_http._tcp.", deviceDomain = "local."}
, SRecord {deviceName = "Jenkins",
           serviceName = "_http._tcp.", deviceDomain = "local."}
]

Find just one and then resolve it's IP and port.

import Network.DNSSD

dnsAny :: String -> IO (Maybe SResolved)
dnsAny s = do
  things <- dnsBrowse s
  if null things
    then return Nothing
    else dnsResolve $ head things

main = do
  web <- dnsAny "_http._tcp"
  print web

Cross Platform Status

Works on:

  • Mac
  • Linux

Doesn't work on yet:

  • Windows