Assignment 1: Sockets in C Goal: Gain experience in basic socket programing using both a connection-oriented and a connectionless protocol. Write two C programs, a client and a server. The client -connects to the server via TCP (IP and port of the server is known, e.g. passed as parameter) -sends a TCP message containing an identification (e.g. Client name, IP address, ...) -receives a number that indicates a UDP port number at the server -sends several UDP packages to this UDP port at the server (e.g. read a file and send the individual lines) -outputs the number of bytes that were sent via UDP -sends a TCP message that markes the end of the UDP messages (e.g. the message is "END") -receives via TCP and outputs the number of bytes that were received by the server on the UDP socket The server -accepts a TCP connection from a client -receives and outputs an identification of the client -sets up a UDP socket -sends the port number of the UDP socket to the client -receives UDP packages from the client and outputs the data -when the "END"-message is received on the TCP socket, sends the number of bytes that were received on the UDP socket to the client (via TCP) You don't care if the number of bytes that were sent and received via UDP differ! For your implementation you only need to consider a single client. Do you need multiple threads to implement this assignment? What needs to be considered for serving multiple clients? How would you implement it? The tool netcat (nc) may be helpful. Deadline: 28.03. --> E-Mail!