A distributed networking application in Java consisting of a transmitter and a receiver that can ensure reliable data transfer and cryptographic authentication. The application uses Java’s UDP sockets (classes DatagramPacket and DatagramSocket and their methods) and provide the necessary reliable data transfer functionality on the top of UDP’s unreliable communication services by implementing the data transfer protocol described below. The data transfer should be one-directional with data flowing from the transmitter to the receiver. Instructions for running the Java Code: 1. There are two packages included in the master folder i.e. finalProject and finalProjectServer. 2. finalProject holds the class for the client application and supporting classes and finalProjectServer holds the class for the server application. 3. Import both the packages in separate workspaces. 4. Run ProjectServer.java from the appropriate instance of Eclipse. 5. Finally, run ProjectSend.java from the other instance of Eclipse. 6. Please contact Akshay Prasad(akshaypd.umd.edu) or Ashish Kashyap(ashish.kashyap2215@yahoo.in) in case of any difficulties.