I've been a user of ICQ for a long time (even though I now use Trillian as my client, I'm still using their network), and one of the things that has been an issue on and off has been the file transfers not working reliably.
I knew it was something to do with NAT, but as my primary skillset isn't really TCP/IP, I wasn't sure if it was fixable or not. Until Mr Sonic messaged me one night and gave me the info I needed - so in the spirit of information sharing, heres a rough guide to fixing ICQ File Transfers for users of connections running NAT, aimed at those who are relative laymans to the field of TCPIP & Routers.
What is NAT?
NAT stands for Network Address Translation. Basically it means that one registered IP address can be used to connect multiple computers to the Internet. This is the scenario for many/most corporate Internet connections, where an entire office (or WAN) may be connected via a single firewall computer, however it is also the case for a lot of residential ADSL connections, where the ADSL Router is assigned the registered IP address, and the computers are assigned non-registered addresses.
What this means is that when a computer on the Internet (such as your friend trying to ICQ you a file) tries to communicate with your computer, they're actually communicating with your router, which then attempts to pass the information on as accurately as possible - which it doesn't always achieve. So what we're doing here, is giving it a bit more info to help it along in the case of file xfers
Step 1 - Your Router.
Your router configuration will vary, however this is what mine looks like:
Some routers might let you define an address range, ie ports 10000-11000 to use, however mine didn't, hence the manual defination of those 6 ports there. It will differ as to what your section is called and the terminology it uses, but you should know it when you see it. It doesn't make much difference what address range you use, just that you remember that address range for use in step 2.
Step 2 - Your IM Program
In pre pro versions of Trillian, you can find the relevant section under preferences, Chatting services, ICQ, Misc, Direct Connection.
In Trillian pro, select Connection / Connection manager, then select your ICQ connection (Denoted by your account name/ICQ number, not the service name), and click "Preferences".
Enter the port range in the relevant box, as shown below (screenshot from Trillian pro).
It's been a while since I've used ICQ - so I can't remember it's preference screen, but again, it should be pretty easy to find.
Step 3 - test.
You should be able to figure this one out.. it's worth remembering that the other persons connection can also be a factor, so try and find someone who has had some success transferring files.
I guess to a lot of people reading this, the stuff contained in here is pretty damn obvious. However, for anyone who's never had the time to invest in finding a fix, this guide will hopefully provide a little insight.
Oh, and thanks to Sonic for fixing my connection by providing me with this info.