Quando un client entra in esecuzione deve aprire un socket di tipo stream attraverso il quale poi comunicherà con il server. Per fare ciò compila la struttura sockaddr_in con il nome dell'host e la porta sul quale gira il processo server. Dopo di che esegue la chiamata di sistema connect che crea la connessione con il socket del server. Una volta instaurata la connessione viene inviato il messaggio con header 'I' che il server interpreta come i campi della struttura che mantiene per ogni client.
Una volta stabilita la connessione e registrata la presenza del client da parte del server, il client si pone in attesa, tramite la select, sui due file descriptor, uno corrispondente al socket del server, dal quale possono arrivare i messaggi degli altri client, e lo standard input, necessario per ottenere i caratteri digitati dall'utente. Tramite la chiamata select è stato possibile risolvere il problema dell'arrivo di un messaggio mentre l'utente sta digitando.
Se il descrittore modificato è quello del server, l'unico compito del client è quello di leggere il messaggio e di stamparlo a video (il client non interpreta il messaggio, ma lo stampa solamente, in quanto tutta l'opera viene svolta dal server).
Se, al contrario, il descrittore è quello dello standard input, possono avvenire due cose: