tu peux retrouver les infos du client avec les fonctions getpeername et gethostbyaddr, mais je ne crois pas que ce soit ce que tu cherches.
Si tu t'embrouilles dès que tu as plus de 2 clients, alors c'est que ton programme est mal fait et/ou que tu ne comprends pas bien ce que tu fais.
un client est associé à une socket. Sur cette socket tu lis ce que le client t'envoie, et réciproquement il reçoit ce que tu écris sur cette même socket. difficile de faire plus simple, en fait.