Some things need to be done to compile with gcc3..
For example: you need to either specify std::cerr or use: using namespace std;
You rely on iostream being included by fstream, this is not the case with all implementations (for example libstdc++ v3)
you use ios::bin, the correct iso/ansi way of doing it is with ios_base::binary
you use fstream::read wrong, it takes a char* (or const char*?) as first argument, so adding a & in front of an array is wrong (since an array is a pointer already), and having unsigned char* needs a specified cast to char*
might be something more, working on making it compile atm, working on it.. if you want a diff I can make one, but it's not hard to change it manually..
Thanx for a great gnutella app in general though..