Being a simple and poor student at the time, i was always looking for ways to pay my bills, preferably doing things that were programming related. So when a professor (and good friend) of mine suggested i create a simulator for one of his courses i jumped at the offer (especially after he arranged funding for it! :-).
The course was an introduction to computer communication for a computer science class he taught. Being that as it may, the program simulates a sender, a receiver, and a communication controller in-between. There's nothing much that's fancy about the simulator. The user is given an opportunity to inject errors into the stream (in the controller). When the checksum is performed, if an error is detected the controller is slowed down and the transmission is re-tried.
You can either start the application and provide a filename. If the file is found the contents of that file are fed to the sender. If the file isn't found or no file is given the sender takes its data from the keyboard; use the ESC key to terminate your input.
Data is transmitted in packets of 255 bytes (or less) at a time. Once 255 bytes (or the end of the input stream) is buffered it is transmitted through the controller who is connected at the other end to the receiver.
See the file COPYING or the copying web page. Basically all code is covered under the GPL and is copyrighted to me (Trevor Woerner) and all documentation that pertains to this project is covered under the FDL.