README.txt   [plain text]

This directory contains support files for running mDNS on Mac OS 9
(and Carbon).

mDNS.mcp is a CodeWarrior 8 project file.

mDNSMacOS9.c and mDNSMacOS9.h are the Platform Support files that go below
mDNS Core.

"Mac OS Test Responder.c" and "Mac OS Test Searcher.c" build an example
standalone (embedded) mDNS Responder and Searcher, respectively.

"mDNSLibrary.c" builds a CFM Shared Library that goes in the Extensions Folder

The CFM Shared Library inplements the same "/usr/include/dns_sd.h" API
that exists on OS X, Windows, Linux, etc., one exception:

 - You don't need to call DNSServiceRefSockFD() to get a file descriptor,
   and add that file descriptor to your select loop (or equivalent),
   wait for data,
   and then call DNSServiceProcessResult() every time data arrives.

   On OS 9, your callback functions are called "by magic" without having
   to do any of this. Of course no magic comes without a price, and
   the magic being used here is an OT Notifier function. Your callback
   functions are called directly from the OT Notifier function that
   received the UDP packet from the wire, which is fast and efficient,
   but it does mean that you're being called at OT Notifier time -- so
   no QuickDraw calls. If you need to allocate memory in your callback
   function, use OTAllocMem(), not NewPtr() or NewHandle(). Typically
   what you'll do in your callback function is just update your program's
   data structures, and leave screen updating and UI to some foreground

"Searcher.c" and "Responder.c" build sample applications that link with
this CFM Shared Library in the Extensions Folder. You'll see that if
you try to run them without first putting the "Multicast DNS & DNS-SD"
library in the Extensions Folder and restarting, they will report an
error message.

"Searcher.c" builds a sample application that browses for HTTP servers.

"Responder.c" builds a sample application that advertises some test
services. By default it advertises a couple of (nonexistent) HTTP servers
called "Web Server One" and "Web Server Two". In addition, if it finds that
TCP port 548 is occupied, then it concludes that personal file sharing is
running, and advertises the existence of an AFP server. Similarly, if it
finds that TCP port 80 is occupied, then it concludes that personal Web
sharing is running, advertises the existence of an HTTP server.