dnssd alternatives and similar packages
Based on the "Networking" category.
Alternatively, view dnssd alternatives based on common mentions on social networks and blogs.
-
snap-core
Core type definitions (Snap monad, HTTP types, etc) and utilities for web handlers. -
call-haskell-from-anything
Call Haskell functions from any programming language via serialization and dynamic libraries -
PortFusion
Haskell-powered cross-platform transport-layer distributed reverse / forward proxy & tunneling solution – currently available for all TCP protocols (RDP, VNC, HTTP(S), SSH, ...). -
network-transport-zeromq
ZeroMQ transport for distributed-process (aka Cloud Haskell) -
HaskellNet
Haskell library which provides client support for POP3, SMTP, and IMAP protocols. -
graphula
A simple interface for generating persistent data and linking its dependencies -
http-types
Generic HTTP types for Haskell (for both client and server code) -
ngx-export
Nginx module for binding Haskell code in configuration files for great good! -
secure-sockets
A library for making secure connections between servers. -
linklater
A Haskell library for the Slack API (including real-time messaging!) -
http-client-streams
http-client for io-streams supporting openssl
Static code analysis for 29 languages.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of dnssd or a related project?
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