Your mission is to move a file from here to there. 70,000,000 points - Can send a file fom slient to the server. 10,000,000 points - Can send the filename with the file. 15,000,000 points - Can work even if packets are lost. 15,000,000 points - Can work even if packets are corrupted. -5,000,000 points - Every day during finals week. To work with lost or corrupted packets, use the provided code. DROP DEAD DUE DATE WHEN YOU GET THE FINAL EXAM!!!! How to do this (Basics) You must write a client that 1) Opens a socket to the server 2) Opens a file for reading 3) Sends the file to the server in 1024 byte chuncks 4) Closes the socket You must write a server that 1) Opens a socket 2) Waits for the client to connect 3) Opens a file for writing 4) Reads the socket and writes those bytes to the file 5) Closes the socket and the file How to do this (With lost packets) You must write a client that 1) Opens a socket to the server 2) Opens a file for reading 3) Loop 4) Read the right chunk of the file into a packet 5) Put the location into the packet 6) Sends the current packet to the server 7) Wait for an ACK 8) If ack received and this is the last packet quit 9) Else if ack received set pointer to the requested position and redo loop 10) If timeout redo loop with current pointer 11) Closes the socket You must write a server that 1) position = 0 1) Opens a socket 2) Waits for the client to connect 3) Opens a file for writing 4) While socket is open 5) Read packet 6) If packet is good, write it in it's spot position = position + BUFSIZE and send ack requesting next chunk 7) If packet is bad, send ack requesting current chunk 8) Closes the socket and the file Remember to ... Use different filenames or locations for the input and output files Check for file opening and writing errors DO NOT NULL TERMINATE Check the movement of binary files. Diff can compare to files diff a.jpg b.jpg