| 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 |
| code. |
| |
| "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. |