benoitjadinon / net-mdns

Simple multicast DNS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

net-mdns

build status travis build CircleCI Coverage Status Version docs

A simple Multicast Domain Name Service based on RFC 6762. Can be used as both a client (sending queries) or a server (responding to queries).

Features

  • Targets .NET Standard 1.4 and 2.0
  • Supports IPv6 and IPv4 platforms
  • CI on Circle (Debian GNU/Linux), Travis (Ubuntu Trusty) and AppVeyor (Windows Server 2016)
  • Periodically checks for new network interfaces

Getting started

Published releases are available on NuGet. To install, run the following command in the Package Manager Console.

PM> Install-Package Makaretu.Mdns

Usage

Discovery

Get all the Apple TVs. The query is sent when a network interface is discovered.

using Makaretu.Dns;

var mdns = new MulticastService();
mdns.NetworkInterfaceDiscovered += (s, e) => mdns.SendQuery("appletv.local");
mdns.AnswerReceived += (s, e) => { // do something with e.Message };
mdns.Start();

Broadcasting

Respond to a query for the service.

using Makaretu.Dns;

var service = "...";
var mdns = new MulticastService();
mdns.QueryReceived += (s, e) =>
{
    var msg = e.Message;
    if (msg.Questions.Any(q => q.Name == service))
    {
        var res = msg.CreateResponse();
        var addresses = MulticastService.GetIPAddresses()
            .Where(ip => ip.AddressFamily == AddressFamily.InterNetwork);
        foreach (var address in addresses)
        {
            res.Answers.Add(new ARecord
            {
                Name = service,
                Address = address
            });
        }
        mdns.SendAnswer(res);
    }
};
mdns.Start();

License

Copyright © 2018 Richard Schneider (makaretu@gmail.com)

The package is licensed under the MIT license. Refer to the LICENSE file for more information.

About

Simple multicast DNS

License:MIT License


Languages

Language:C# 100.0%