{"id":26,"date":"2005-02-04T22:29:41","date_gmt":"2005-02-05T03:29:41","guid":{"rendered":"http:\/\/crschmidt.net\/blog\/?p=26"},"modified":"2005-02-04T22:29:41","modified_gmt":"2005-02-05T03:29:41","slug":"zeroconf","status":"publish","type":"post","link":"https:\/\/crschmidt.net\/blog\/archives\/26\/zeroconf\/","title":{"rendered":"Zeroconf"},"content":{"rendered":"<p>There&#8217;s not a lot of webpages out there on the neat things you can do with Zeroconf. For some reason, this surprises me. I feel like it&#8217;s a pretty interesting technology, but it doesn&#8217;t seem like anyone&#8217;s done much with it, despite the fact it&#8217;s been around for quite a while. For example, <a href=\"http:\/\/www.aaronsw.com\/\">AaronSw<\/a> wrote about zeroconf more than two years ago.<\/p>\n<p>For those who may have missed the boat, the primary thing that I mean when I talk about Zerconf is automated service discovery (DNS-SD). This is the kind of thing that allows iTunes to see the other computers locally that are also sharing iTunes music. Apple has put a lot of work into making this stuff simple, to the point that it&#8217;s one of their more popular open source releases. (Their mDNSResponder code, that is.) I know that Gnome is putting a lot of effort into making things like this work, but I don&#8217;t run Gnome (I&#8217;m a minimalist) so I don&#8217;t know where that&#8217;s really at.<\/p>\n<p>Earlier tonight, I was having some problems announcing services over Rendezvous, which is the only way that iTunes will attempt to talk to a DAAP share &#8211; there&#8217;s no way to tell iTunes &#8220;go to this IP address&#8221;. This is probably by design: this way I can&#8217;t open up someone&#8217;s music share that&#8217;s not announcing it locally. Kind of annoying for me, since I&#8217;d like to be able to play my music from home at work, which I would be able to do with DAAP otherwise After some trouble, I eventually got my machine to announce the iTunes share (which is done via mt-daap) on my Linux box, so I can now play that music. I also added a few other Services: HTTP and SSH. Still, I don&#8217;t really know what I can do with these. Why doesn&#8217;t putty or some other app capitalize on this by offering to search local hosts for SSH? Does no one really use local services that this could make easier?<\/p>\n<p>My Zeroconf stuff comes from Howl, which offers a multi-platform open-source solution to providing Zeroconf services. It&#8217;s a decent library, with decent tools. It is a bit iffy on the user-level: The error messages are pretty unspecific. For example, if you try to announce a service before first running mDNSResponder, it will give an error message that it is unable to connect: but won&#8217;t tell you where or why, nor is it mentioned in any documentation (that I can find). The code itself seems solid, however, and is working well here. So, what cool ideas are there for Rendezvous that no one has done anything with? And who&#8217;s going to step up to the plate to start?<\/p>\n<p>One example I can think of: set up Rendezvous to announce your local MySQL servers. Then, if you&#8217;re in an office where you do development, you can just pick from a drop down of development servers: you don&#8217;t have to depend on static IP addresses, you can just scroll through a list. You can even use the text fields of the Rendezvous to include a Guest login. Seems like something that would work well for <a href=\"http:\/\/cocoamysql.sf.net\">CocoaMySQL<\/a>. Of course, it doesn&#8217;t look like it&#8217;s been touched for more than a year, so it&#8217;s not likely to change in the near future. Just an idea.<\/p>\n<p>What zeroconf does not do, which many people don&#8217;t seem to understand, is provide any real help in actually creating the connections. Lots of people, myself included, seem to think &#8220;Rendezvous&#8221; is this magical tool that does all the network communication for you. (That is, I used to think that way &#8211; I know better now.) Really, all it does is give you an IP address &#8211; nothing that a relatively tech savvy person couldn&#8217;t do on their own, at the application level. The communication actually takes place over the typical channels &#8211; regular socket communication.<\/p>\n<p>So, although Zeroconf\/Rendezvous is cool, it&#8217;s not an &#8220;end all\/be all&#8221; to network communication. Just something to keep in mind.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There&#8217;s not a lot of webpages out there on the neat things you can do with Zeroconf. For some reason, this surprises me. I feel like it&#8217;s a pretty interesting technology, but it doesn&#8217;t seem like anyone&#8217;s done much with it, despite the fact it&#8217;s been around for quite a while. For example, AaronSw wrote [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,21],"tags":[],"class_list":["post-26","post","type-post","status-publish","format-standard","hentry","category-technology","category-zeroconf"],"_links":{"self":[{"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":0,"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"wp:attachment":[{"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crschmidt.net\/blog\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}