Puoi usare una funzione di ricezione non bloccante; di più non ti so dire, dato che ignoro che cosa tu stia facendo e con che linguaggio e su quale sistema operativo.
La funzione di ricezione C recv POSIX possono essere non-bloccanti se viene passato il flag MSG_DONTWAIT
while (1) {
char buf[1024];
ret = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
if ((errno == EWOULDBLOCK)||(errno == EAGAIN)){
// il messaggio potrebbe essere incompleto
processMsg(buf, ret);
} else {
// Gestione degli altri codici di errore
}
}
Ci sono poi altre funzioni ed altri metodi per gestire i socket non-bloccanti oppure usare select() per impostare un timeout sul socket o controllare se ci sono dati...