(I CC'ed the list)
I am first and foremost interested in mDNS
(http://www.multicastdns.org/ ) and dns-sd (http://www.dns-sd.org/ )
since I want to be able to advertise and find advertised services
easily. It makes perfect sense to incorporate the service
advertisements in [netserver] since its providing and managing the
network port, but I am not sure yet how to handle the discovery aspect.
A separate object might make sense for the discovery aspect though.
Here's one idea: the [mdnsclient] object keeps track of all service
advertisements. When you want to use one, you would send [mdnsclient]
a message like [service 1( and it would output the IP address and port
to connect to. That's one idea.
Another would be to have [netclient] keep track of all the services, then to connect, you send [netclient] a message like [connect mdns 5( and it would connect to service #5 in the mDNS list. But there needs to be a way to process this list in order to be able to pick which services you want to connect to. For example, you would probably want to filter the service announcements to only display the service types that you are interested in connecting to. For example, in a Pd patch, you are unlikely to want to connect to an ssh server.
So this is why I think that this part should be a separate object.
Since the service announcements will need to be processed in order to
choose which one you want to connect to, it would be nice to have it as
flexible as possible. But there might be a better way that what I have
come up with.
As for cross-platform APIs, Howl (http://www.porchdogsoft.com/products/howl/ ) is meant to be a cross-platform zeroconf API. They say it works on Win2k/XP, GNU/Linux, FreeBSD, and MacOS X, but I haven't tried it yet. Its got its own license, which seems to be BSD-like, but I am not a license expert. It allows both binary and source redistribution with and without modification, so it looks good.
Apple released their Rendezvous code under their AFPL 1.2, which is open source, but only usable for non-commercial work. Their code runs on MacOS 9, MacOS X, Windows, and Posix, but I am pretty sure that they just give you command line utils, no API.
.hc