Kaillera is a simple but effective client/server program
that is typically used to provide multiplayer
support for computer
Kaillera consists of a client and a server. Let's say that you want to play a game with a friend using a Kaillera-enabled emulator. One of you must start a server (a very simple process of editing the configuration text file and then running the executable). Both of you must then run the client, which is a version of the emulator with Kaillera support compiled in. One of you (it doesn't matter which one) can then start the game and the other can join in. Whoever starts the game will be the first player. Whoever joins the game will be the second player.
At that point, the game plays just like the original two-player version. I have experienced some lag, but it's been very minor and infrequent - basically, all Kaillera does is send your keypresses to your friend's game and vice versa, so it doesn't have to send much information at all.
Kaillera support has been added to a number of emulators, including MAME (Arcade emulator), Bliss (Intellivision), NESten (NES), Jnes (another NES), Nemu64 (Nintendo 64), Modeler (Sega System 32), Gens (Sega Megadrive) and WinUAE (Amiga). An SDK is freely available.
You can find Kaillera at http://www.kaillera.com . Try it, it's a beautiful thing.
Thanks to omegas for pointing out that MAME is not the only emulator that uses Kaillera.