I'd recommend using anything but Indy. It is both buggy (especially versions bundled with Delphi) and slower than other component sets. It is easy to understand and start using it, but once you delve deeper under the hood, you start noticing small problems. Indy is constantly under development and you can find latest build here. Problem is that you can't easily replace the bundled version with newer in Delphi versions from 2009 onward because of some hard-coded dependencies.
Delphi has few other network communication methods integrated, but I recommend exploring 3rd party components. First, if you want open source, you should take a look at Overbyte ICS. It is a bit difficult to master, but it has good performance and feature set.
As a very good commercial solution, take a look at IP^Works. I have only scratched it, but from what I saw, I can wholeheartedly recommend it.
Rubbish! I have been using Indy in production since 2004. I have over 20 different applications (servers and clients) out there all communicating with Indy and I have never ever had a problem with the Indy components. Yes, if you take the latest build on a daily basis then there might be the odd issue, but these are quickly fixed. You can see how I built an entire generic communication framework from the download on my web site (csinnovations.com/framework_delphi.htm).
I have to correct myself since what I explained is related to protocol specific component issues, like IMAP. The TIdTCPServer and TIdTCPClient on the other hand are quite good, though I still claim that other component sets outperform Indy, especially in time-critical tasks.
Fair enough about the specific component sets (I don't really use anything outside of TCP, UDP, HTTP, and SMTP). Given that I can get delays in the order of milliseconds communicating with Indy and throughput of 20-50 Mbps for a connection, I suspect that any performance limitations are more in the implementation than Indy itself. As to how far you can push Indy, have a look at my question here - stackoverflow.com/questions/7150093/.
@LightBulb: the "hard-coded dependancies" on Indy in Embarcadero packages were removed in XE/XE2 to make Indy upgrades easier on users without breaking anything.
@RemyLebeau-TeamB: I know that, but what about us who are stuck with older versions of Delphi, especially 2009/10? You can't expect us to upgrade Delphi just to be able to use a crucial component set. My point is that I need component set that works and it does exactly what is expected from it. That's why I'd still recommend against Indy if you need time-critical and long-lasting functionality.