A proxy server is a server that acts as an intermediate between a client and a server. Instead of connecting directly to the server, the client connect to the proxy. The proxy forwards requests from the client to the server and then forwards the replies from the server back to the client.
In the real world, proxy servers are useful for privacy (the client needn't know who the server is and vice versa) and security (the proxy might sit outside a firewall and provide carefully controlled and monitored access to the things inside the firewall).
For this assignment, the proxy server will just be silly.
SUGGESTION: Debugging distributed programs like this is hard. The more time you spend planning and desk-checking your program, the less time this assignment will take.