582303 Network Programming ========================== Programming Exercise (starts on Mon Feb 26, 2024): For this programming exercise there is only a single task as described below but it is somewhat more demanding than the usual weekly exercise set. The task is the same for all students and each student is supposed to complete this task independently and as soon as possible (see further information on grading below). Completing this task is required to pass the course. Your task is to write a program that communicates with a server program (service) which has the service name UNIX_TL and which is running on host dx6-cs-02.pc.helsinki.fi Write a program which connects to the UNIX_TL server using TCP and follow the instructions that the UNIX_TL server will send to your program. You have completed the task, once you get a message "... Your program has been ACCEPTED ..." UNIX_TL server will not give you all instructions at once, so make sure you ALWAYS read (receive) everything it sends to your program and do not close any connection (socket) prematurely. In addition, note that not everything is fully explained in the instructions but sometimes you need to deduce or guess what your program is required to do. Careful inspection of how the UNIX_TL server does things should help in such a case. Please make sure your program can be run autonomously, that is, it should require no human intervention at run time (e.g., no user input). Any input should be given only as command line arguments. Also, all domain names (to IP addresses) and service names (to port numbers) should be resolved by the program code. Hard coding of IP addresses or port numbers is not acceptable. The server will start its execution no later that on Monday, February 26, 2024, at 15:00 (may start somewhat earlier). There will be an announcement on the course web page once the server is running and this exercise description sheet will be updated to indicate the service and host name. Important!!!: Your program may get accepted only if it runs on one of the CS Department computers (the Linux machines at the department) and the home directory in use is /home// In addition, access is needed to the directory /home/fs/ It is NOT possible to connect to the UNIX_TL server outside of the CS Department network. If working remotely, use remote login (ssh) to one of the CS Department nodes np1.cs.helsinki.fi np2.cs.helsinki.fi np3.cs.helsinki.fi np4.cs.helsinki.fi np5.cs.helsinki.fi (via melkki or melkinpaasi) to run your program. NOTE: Only the nodes listed above are guaranteed to have connectivity with the server node, but the PC computers in the CS Department classrooms and corridors may possibly work as well. It is recommended that you run your program on one of the computers listed above. When asked, send the pathname for the source code of your program. It should be relative to your home directory as you will be instructed by the server. In addition, make sure that the source code for your program is implemented in a SINGLE source code file ONLY (e.g., my_program.c) and it does not include by #include other than the standard library headers that you need (i.e., all source code in a single source file and no linking of several modules from separate source code files). That is, your program (my_program.c) should compile simply with cc my_program.c (OR gcc my_program.c) on CS Department Unix (Linux) computers. Follow this instruction even though, in general, it might not be the best practice to implement a program in a single source code file (module). Instructor (Markku Kojo) will be available for questions and help on this task in room C216 (or online in Zoom if so agreed/indicated) according to the following tentative schedule: Tue Feb 27 at 16:00 - 16:30 Wed Feb 28 at 16:00 - 16:30 Thu Feb 29 at 11:30 - 12:15 NEW TIME CANCELLED: Thu Feb 29 at 12:15 - 13:00 Mon Mar 4 at 12:30 - 13:00 After March 4 by appointment (send email to set up an appointment). To pass the course this task should be completed by March 11, 2024 at 24:00 (EET) o'clock at latest. The maximum course points you may gain with this exercise depends on the date and time your program becomes accepted as follows: 7 points deadline Thu, Feb 29, at 24:00 (EET) 6 points deadline Fri, Mar 1, at 24:00 (EET) 5 points deadline Mon, Mar 4, at 24:00 (EET) 4 points deadline Wed, Mar 6, at 24:00 (EET) 3 points deadline Fri, Mar 8, at 24:00 (EET) 2 points deadline Mon, Mar 11, at 24:00 (EET) 1 point for completing the exercise at any later time The quality of the program code, including how the source code is commented and how well it fulfills the requirements set above, may also be taken into account when grading this exercise. Note, however, that given the nature of the exercise we do not expect fully polished nor production quality code. Good luck!