TKT21026 Network Programming ============================ Programming Exercise (starts on Mon Feb 23, 2026): 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 the task 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 23, 2026, at 15:00 (may start somewhat earlier). There will be an announcement on the course exercises web page once the server is running and this exercise description sheet will be updated to indicate the service and host name at the same time. 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// Note: if you are using one of the Linux computers available in the Exactum corridors or classrooms, your terminal session does not necessarily show /home// as your home working directory to begin with but by giving the "cd" command once should set it corectly. 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 code file and no compiling or linking of other modules from separate 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 the instruction above 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 schedule: Tue Feb 24 at 16:00 - 16:30 Wed Feb 25 at 16:00 - 16:30 Thu Feb 26 at 12:15 - 12:45 Note the time changed from tentative! Mon Mar 2 at 14:00 - 14:30 After March 2 by appointment only (send email to set up an appointment). To pass the course this task should be completed by March 9, 2026 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 26, at 24:00 (EET) 6 points deadline Fri, Feb 27, at 24:00 (EET) 5 points deadline Mon, Mar 2, at 24:00 (EET) 4 points deadline Tue, Mar 3, at 24:00 (EET) 3 points deadline Thu, Mar 5, at 24:00 (EET) 2 points deadline Fri, Mar 6, at 24:00 (EET) 1 point deadline Mon, Mar 9, at 24:00 (EET) 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!