Added timeout so that it deals with packets that just don't get sent back at all.  Would mostly pass the assignment except that it's faking local drops and doesn't take CLI arguments or negotiate in the beginning.