<<...how sure you can be that the other client won't be shut down in the middle of the file transfer. "Daemon clients" obvously increase the probability of the successful download, which is right now the most serious problem for the Gnutella network.>>
The solution to this problem is really quite simple and has been done by both Limewire and Gnucleus, and I cannot understand why it hasnt been implemented in more popular gnutella clients such as Bearshare and Gnotella. It has been done also in Kazaa/MusicCity and I believe Napster had done the same to their software before their demise.
The solution is simple. Compare filesizes and filenames of returned results, and create a download queue which, if the download is interrupted, the client will go through and resume the file from another location. This can be performed in a loop so that if all hosts in the queue are either offline or busy, the download can continue when a host gets a free download slot.
**For those of you who might claim that comparing filesizes and filenames is not feasible due to the amount of files on gnutella with similar names/sizes, the benefit of such a feature greatly outweighs the extremely rare inconveniences of an occasional bad search result.
This already has been implemented, and I urge all Gnutella developers to create such a feature for the overall reliability of gnutellaNet and to distribute bandwidth across the network evenly.