About Avahi, if that's what is commonly shipping on Linux systems, then that would probably be the better route to take on those platforms. As currently implemented, wxDNSSD relies on Apple's implementation. I imagine Avahi wouldn't be particularly difficult to implement into my existing framework. I suspect the structure will likely be very similar (if not identical), but a lot of the code I've written probably won't apply. I have a suspicion it would wind up being a parallel implementation, like much of wxWidgets' cross- platform support.
It may not be a bad idea to see if my implementation works with Apple's Bonjour on Linux. If it does, you could still do an Avahi implementation, but this would make it much easier to ensure that software written against wxDNSSD will work the same regardless of the backend. (just an idea)
Anyway, I committed a change to servicediscoverytaskbase.h a few minutes ago, so there should be a little more information there on what you need to know to get going. It's getting late, so I'm headed home for the evening.
We should probably continue this discussion on the wxCode mailing list. https://lists.sourceforge.net/lists/listinfo/wxcode-users I figured I would mention this before starting to CC the list (in case you have privacy concerns about anything you've already mentioned).
------------------------------- Hank Schultz Cedrus Corporation http://www.cedrus.com/ On Dec 18, 2006, at 5:54 PM, Ishan Arora wrote:
William,Why is this project not accessible straight from wxCode? It would be more visible to the interested that way. My purpose is to create an open source network messenger. I am thinking of using Bonjour for the messenger to know the presence of other instances of the messenger on the network. Is there a better way you wish to recommend?I just came across this on wikipedia.orgAvahi is a Zeroconf implementation for Linux and BSDs. It implements IPv4LL, mDNS and DNS-SD. It is part of every major and many minor Linux distributions, and is installed by default on e.g. Ubuntu version 6.10. If run in conjunction with nss-mdns it also offers host name resolution.Avahi also implements binary compatibility libraries that emulate Bonjour and Howl, so software made to use those implementations can also utilize Avahi through the emulation interfaces.On 12/19/06, William H. Schultz <[EMAIL PROTECTED]> wrote:Thanks! It was also just the thing I needed. Of course, since no one had published a good implementation, I did the best I could and put it out there for everyone else. The key things missing are documentation and support for text records. I'm working right now on adding a short blurb to the servicediscoverytaskbase.h header file to give a quick overview of how stuff works. I hope to have this committed within the next half hour.Hank Schultz <cedrus_logo_w140.gif> http://www.cedrus.com/ On Dec 18, 2006, at 5:34 PM, Ishan Arora wrote:William,I guess I am the first one to be interested because the project is relatively new and alpha version :) Anyways I am finding Bonjour just the right thing for my project, so I owe you a big "Thank You!!!" for helping me use it in wxWidgets. I'll try to contribute to your side project ;)Thank you On 12/19/06, William H. Schultz < [EMAIL PROTECTED]> wrote:It has not been tested. There is a mechanism implemented to work based on the select() type of receiving events, which should theoretically be compatible with Linux. I tried to use this but had issues. I don't recall if I tried it on both OS X and Windows, but I think I may have. This would rely on idle events. I also tried a threaded implementation, allowing the bonjour calls to block. I don't recall precisely why I'm not using this method myself.There are two methods implemented that could potentially work on Linux. Unfortunately, I know I had some kind of issues with both of these methods on either Windows or Mac OS X, so you may have your work cut out for you to get it running on Linux. There is the slim possibility that it will work pretty easily for you--that is, the methods are implemented--but I wouldn't count on it.In the end, I had a hard time getting everything to work right on Windows, so it could just be that I didn't devote enough effort into tweaking things for the more globally available methods.Everything you need to make this work should be in servicediscoverytaskbase.h and .cpp. This is where the bonjour tasks get set up. Since they all work mostly the same way, all of the code is in here. One other place that may need modification is wxServiceDiscoveryResult::SetNetworkInterface(), which takes an integer index for the network interface and retrieves the name. On Mac OS X, this is en0, en1, fw0, etc... If the Mac OS X code for this doesn't work under Linux, it's just a matter of finding the line or two of code that takes this index and turns it into a name.If you're willing to look over Apple's DNS SD documentation, then the functionality of the code should be relatively clear.I have a vague recollection that the threaded implementation was a lot more reliable than the idle-event-initiated-select() implementation (though I think I had some issues with starting and stopping tasks). You are probably better off starting down this route.I'm planning on rewriting the socket sample to use this, but it may be a bit before I get around to it.Oh, and in case you didn't already know, Bonjour doesn't do much of anything for actual network communication. You're on your own to set up a server and or client. Bonjour just tells you what claims to be available (dns name and port... you have to get the IP yourself, but that should be implemented in my code in wxServiceDiscoveryResult::SetTarget).There are a lot of calls to wxLogDebug() to keep you informed as to what is going on.You're the first person to contact me to say, "hey, I'm interested!" Sorry about the disarray. Our potential use for this is way out in the future, so it's a low priority side project, relative to tech support and fixing bugs in shipping products. ;)Hank Schultz <cedrus_logo_w140.gif> http://www.cedrus.com/ On Dec 18, 2006, at 4:50 PM, Ishan Arora wrote:William,Thank you for your response. I am really thankful. Does wxDNSSD also work on linux, even if not tested?On 12/19/06, William H. Schultz < [EMAIL PROTECTED]> wrote: Ishan,Yes, I have. So far, it seems to be working pretty well for me internally. I haven't yet inflicted it on anyone else in my company, and especially not any users yet. You can get the source code here:https://svn.sourceforge.net/svnroot/wxcode/trunk/wxCode/ components/servicediscovery/ (works in a web browser or subversion client)I don't have anything to help build it yet. I'm currently including the source files as if they were part of my own project. In include/wx/servicediscoverydef.h, this code is configured to only build in debug mode, so you will likely want to modify this file.There is one Bonjour feature that is missing, and that's the text records. At the moment, I have no use for it, so I haven't implemented it. Everything else is working fine for me on Windows and Mac OS X.I'm sorry that I haven't yet put together a sample to show off how to use this functionality, but it's relatively simple. There are four primary data types: browser, resolver, service, and result. If you have something to announce, you create a service and then start it. If you want to find something, you create a service but *don't* start it. You provide this service to the browser. The browser returns results via events. These results don't have full IP information, so you need to resolve your results. The same result objects are used for both, and an object array has been defined in servicediscoveryresult.h to make it easier to keep up with the results.An important detail to remember is that all bonjour tasks must be started and stopped for anything to happen (browser, resolver, and service are all tasks). If you don't start your service, it won't be visible (this is what you want if you are looking for results but not if you have a service to offer). If you don't start the browser, you will never get any results. The browser should stay active until you no longer need results. The resolver can probably be deactivated after you get your IP information.While bonjour supports IPv6, wxWidgets doesn't, so everything is done with IPv4.I hope this is enough to get you started! Hank Schultz <cedrus_logo_w140.gif> http://www.cedrus.com/ On Dec 18, 2006, at 3:37 PM, Ishan Arora wrote:hiyou seem to have created a wrapper class for Apple's Bonjour. it seems to be very helpful from the description, but i am unable to access it. can you please check it. if it takes time to put them for download then please email me the files.thank you
PGP.sig
Description: This is a digitally signed message part
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ wxCode-users mailing list wxCode-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wxcode-users