(Premessa: scusami tu, intendevo TCP nel mio post ed ho erroneamente scritto HTTP!!!)
A maggior ragione!

UDP semplicemente perchè tutti i telefoni devono condividere le stesse informazioni rimanendo in ascolto tutti sulla stessa porta, Le informazioni da inviare sono minime: stringhe di testo.
Questo lo fanno tutti i protocolli.
Attenzione a non confondere due concetti: numero di porta aperta per device con numero di porte aperte nel device.
In un singolo device solo una singola applicazione può restare in ascolto su una porta per protocollo. Quindi se una applicazione sul device sta in ascolto sulla porta X, un'altra applicazione non può mettersi in ascolto sulla stessa porta utilizzando lo stesso protocollo (a prescindere dal protocollo usato).
Ma quello che vuoi fare tu è diverso: tanti device (diversi) in ascolto tutti sulla stessa porta (del device). Questo è possibile con tutti i protocolli.
TCP è un protocollo orientato alla connessione, pertanto per stabilire, mantenere e chiudere una connessione, è necessario inviare pacchetti di servizio i quali aumentano l'overhead di comunicazione. Al contrario, UDP invia solo i datagrammi richiesti dal livello applicativo;
Solo per questo motivo... non esiste una ragionevolità superiore ed aulica per il quale ho scelto questo protocollo...
Vero che l'overhead del TCP è superiore a quello del UDP, ma è un overhead che in ogni caso devi includere!!!
Mi spiego meglio: il protocollo UDP non è orientato alla connessione, il che risulta essere più veloce ma totalmente inaffidabile: non garantisce l'arrivo dei pacchetti e non garantisce l'ordine! Devi essere tu, lato client (ovvero i device in ascolto) ad occuparti di queste problematiche o rischi (ad esempio) che il Device A mandi via chat la stringa "Ciao DocTerror, come stai?" e che il Device B riceva la stringa "stai Ciao come"!!!
Uno scenario di questo tipo (e quindi l'utilizzo del protocollo UDP) è ottimo per applicazioni che inviano streaming audio/video, dove la perdita di pochi pacchetti non è importante (perdere un singolo frame di un video streaming non impatta sul risultato finale) e dove l'ordinamento dei pacchetti è gestito dal buffer lato client.
Detto questo, a te la decisione. E' una bella sfida fare una chat in UDP, ma prima di partire progetta per bene i requisiti del tuo sistema e le problematiche associate. Se decidi di continuare, siamo qui per aiutarti nell'impresa!

EDIT: ho appena letto la tua risposta prima del mio invio. Se la tua applicazione dopo deve aggiungere un video il mio consiglio resta: usa il TCP per la chat e l'UDP per il video (come fanno tutte le altre applicazioni del ramo!). Per quanto riguarda la soluzione del problema, mi sa che devi postarci parte del codice, tecnicamente se sei in ascolto e arriva un pacchetto il server di ascolto si sblocca. Ti basta metterti nuovamente in ascolto per riprendere.
Ciao!