My life changed since when I discovered netcat.
This tool is very simple. Really, too damn simple. But it is incredibly useful.
netcat... cat over network... stdin data goes to the network, incoming network data goes to stdout... That's it!
Supports a client mode (connects to some host at some port) or server mode (listens to some port waiting for connection). Supports TCP and UDP (but most of the time you will want to use only TCP).
I've been using netcat for many things:
1. To copy files from one computer to anoter.
2. To copy an entire hard drive from one computer to another.
3. To copy/paste small snippets of text from one computer to another (and directly inside vim).
4. To test DNS.
5. To test network bandwidth/throughput.
There is one very important difference between using netcat (as client) and telnet client: netcat preserves every byte that passes through it, while telnet automatically converts newlines and handles some escape codes. This means that netcat works great for binary data, and telnet works as a low-level HTTP/SMTP/POP3 debugging tool.
Netcat is a very useful and handy tool for debugging or exploring TCP/UDP services, but man is the code-base dense.
Although the code-base has gotten a little better since it was forked by GNU.