You must first decide whether 1) the server will send the missed packets using the initial multicast group; 2) a second multicast group; or 3) a unicast connection to the client. In the first case, an additional socket is not needed by either the server or client. In the second case, both the server and client will need an additional socket. In the third case, the client will need an additional socket and the server will need an additional socket for each client.
The above looks at socket requirements for sending data packets from the server to the clients. For sending NACKS from the client to the server, you'll need to decide whether a client will sends NACKS using 1) the same initial multicast group 2) the secondary multicast group of the second case above; 3) a different multicast group dedicated to NACKS; or 4) a unicast connection to the server. Only in the last two cases will the client need another socket. The server will need an additional socket for the third case and an additional socket for each client for the fourth.
The server can simultaneously multicast packets and respond to missed packets by using multiple threads.
This is an area of very active research (of which I'm a part). Good luck.