Se devi mandare delle risposte ai client semplicemente continua ad utilizzare UDP chiamando una sendto() per ogni client connesso.
Perchè dovresti utilizzare ICMP? Come ti è venuto in mente? ICMP serve a tutt'altro e non dovrebbe neanche trasportare dati al suo interno.
O continui ad usare UDP oppure riscrivi tutto utilizzando TCP.
A meno che non scrivi applicazioni particolari come port scanner, firewall, ping o software di routing ICMP non ti interessa.