This program implements the sender and receiver sides of the
of a selective repeat protocol.

All data will be carried in DatagramPackets. The DatagramPackets will be
sent and received by SelectiveRepeatSender and the
SelectiveRepeatReceiver using UDatagramSocket objects. The
UDatagramSocket class is a sub-class of DatagramSocket that can be set
to intentionally flip transmitted bits, lose packets, duplicate packets,
and/or mis-order packets. The types and percents of errors are set
through the use of a configuration file call Socket.cfg. Initially the
UDatagramSocket will not introduce any errors. Eventually, you will edit
Socket.cfg so that some packets are lost, corrupted, duplicated, and
reordered.