The program must use only system calls and calls found in the libc and not use any strange librraries. I have attached the instructions list. If possible I would like the graduate student addendum to be done too. The hostnames and port numbers should NOT be hard coded and should be command line options (the client accepts host and port and the server takes the port and listens). The application should use TCP or UDP (preferably TCP). There should be at least 5 basic commands that the client sends to the server, the server preforms the action, and sends it back to the client. The server must print communucation received from the client and each communication sent by the server back to the client with arrow directions (Client->Server, Server->Client).
A simple example could be like a calculator that adds numbers, multiplies, divides, finds the cosine of an angle, finds the z-score of a number, etc. DO NOT HAVE ALL 5 COMMANDS BE AS SIMPLE AS ADDING, SUBTRACTING, DIVIDING, etc. They have to be unique enough that the codes for the five commands are not super simple. For instance one command could just take in a string and print the reverse of that string as well. So 5 minimum commands PLUS something “extra”, which can be something unique (look at the Graduate part for examples). MAKE SURE TO HAVE A WRITEUP EXPLAINING HOW IT ALL WORKS.