I need some C# code that provides an API to access the Gnutella network.
Specifically, I need to be able to programmatically Query for files matching a particular criteria on the network, get the full name of the files that match (so I can tell if I already have it) get a QueryHit message and be able to download those files programmatically from other Gnutella servents.
I also need to be able to programmatically publish the existance of the files on my own Gnutella servent. I don't know if this consists of simply copying the files into a shared directory, or if there is something else that needs to be done.
It must work through firewalls.
I don't need or want any sort of GUI, just the APIs to interface with the Gnutella network programmatically. The only GUI necessary is enough to test the functionality, which shouldn't be much.
See the attached zip file for a specific example of what I want to do with this API.
I also need to have a good description of what needs to be installed on the Servent so that it can act as a Servent. If possible, I don't want people to have to install Gnucleus or something else before my program will work, but if that's the easiest way to do it, I am willing to do so. Ideally, I would have the Gnutella p2p built into my program directly, rather than requiring another program, but that's negotiable depending upon the cost of doing it one way vs the other.
Also, if you can propose an alternative p2p approach to Gnutella, I'm willing to entertain it if it is non-proprietary and popular. I'm not married to any technology aside from C# and .NET.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
Windows with .NET platform installed (Windows XP, for example)
with a Gnutella client installed if necessary.