Powiedziałbym, że najlepszym sposobem jest użycie Bonjour/Zeroconf/mDNS dla C#; Wiele uwagi poświęcono sprawieniu, by gra była przyjemna w sieci; IE, jeśli to możliwe, z mniejszą częstotliwością, itp. Jest tam Mono.Zeroconf i czytam, że jest starszy projekt .NET w Apple SDK, ale go nie znalazłem.
Tak najłatwiej byłoby zainstalować Bonjour for Windows, a następnie uzyskać Windows Binaries for Mono.Zeroconf spróbować przykład MZClient.exe
upuść Mono.Zeroconf.dll
i/lub Mono.Zeroconf.Providers.Bonjour.dll
odniesień do swoich projektów i odchodzą.
coś takiego:
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: metoda brute force - Jest to możliwe. Czy ** chcesz ** lepszy sposób. :) Nawet przy użyciu podejścia masowo równoległego, wielowątkowego (konceptualnie podobnego do fping), przetestowanie wszystkich węzłów (i wszystkich potencjalnych portów) w podsieci LAN może potrwać kilka minut. Mam kod w produkcie, który robi dokładnie to, ponieważ nie było lepszego wyboru dla tej usługi. Westchnienie. –