An implementation of the Stop-and-Wait protocol for reliable file transfer and data transmission over UDP sockets