After compiling, there will be two executables: server and client Run the server by doing: ./server [Port] or just ./server The default port is 9999 Run the client by doing: ./client [Username] [Host] [Port] The client is mostly the same except for the existence of a static global variable (sorry). The client's socket fd to the server is global so the client's interrupt handler can send a message to the server telling it that the client has disconnected.