This can be done without keeping a socket open all the time, though.
And IRC isn't a good example of anything except poor design. ;)
As far as the necessity of servers in the first place, you'll always
need something that acts like a server, but there's no reason it has
to be a centralized system. Look at the organization of DNS, or even
Usenet. If you want a fully synchronized net-spanning world ala
IRC (most of the poor design of IRC is in the design requirements),
then yeah, you're going to smash some servers to the ground. This isn't
the only solution, though.
James