I use to just use mpg123 and ogg123 directly. Then I noticed that sometimes mpg123 had problems with playlists, so I wrote a simple C program that would list all the urls in a pls file.
The user chose the url and then called mpg123. Yet mpg123 didn't have any caching or anything of audio streams. Enter mplayer. This is one of the main reasons why I use mplayer. Mplayer has caching which is excellent for streaming internet radio. That plus if you have any video files you can still play the file from a tty and send the video output to null. As far as server-client programs go I tried icecast and liked it between Slackware and Debian. Yet I haven't used that situation much since I'm a college student and don't have a lot of money to be running an 'always-on' server that eats up electricity.