Ich würde sagen, der beste Weg, Bonjour/Zeroconf/mDNS für C# zu verwenden ist; Es wurde viel darüber nachgedacht, wie man mit dem Netzwerk gut spielen kann. IE es Pings weniger häufig im Laufe der Zeit, wenn möglich, usw. Es gibt Mono.Zeroconf, und ich lese, es ist ein älteres .NET-Projekt in der Apple SDK, aber ich habe es nicht gefunden.
So wäre die einfachste Bonjour for Windows zu installieren, erhalten dann die Windows Binaries for Mono.Zeroconf versuchen das Beispiel die Mono.Zeroconf.dll
fallen MZClient.exe
und/oder Mono.Zeroconf.Providers.Bonjour.dll
in Ihre Projektreferenzen und gehen.
Etwas wie folgt aus:
var service = new Mono.Zeroconf.RegisterService {
Name = "Use Me for Stuff",
RegType = "_daap._tcp",
ReplyDomain = "local.",
Port = 0024200,
TxtRecord = new Mono.Zeroconf.TxtRecord {
{"I have no idea what's going on", "true"}}
};
service.Register();
var browser = new Mono.Zeroconf.ServiceBrowser();
browser.ServiceAdded +=
delegate(object o, Mono.Zeroconf.ServiceBrowseEventArgs args) {
Console.WriteLine("Found Service: {0}", args.Service.Name);
args.Service.Resolved +=
delegate(object o, Mono.Zeroconf.ServiceBrowseEventArgs args) {
var s = args.Service;
Console.WriteLine(
"Resolved Service: {0} - {1}:{2} ({3} TXT record entries)",
s.FullName, s.HostEntry.AddressList[0], s.Port, s.TxtRecord.Count);
};
args.Service.Resolve();
};
browser.Browse("_daap._tcp", "local");
Re: Brute-Force-Ansatz - Es ist möglich. Sie wollen ** einen besseren Weg. :) Selbst mit einem massiv parallelen Ansatz mit mehreren Sockeln (konzeptionell ähnlich wie fping) kann es immer noch einige Minuten dauern, alle Knoten (und alle möglichen Ports) in einem LAN-Subnetz zu testen. Ich habe Code im Produkt, das genau das tut, weil es keine bessere Wahl für diesen Dienst gab. Seufzer. –