On server side one socket for sending multicast and another for receiving replies from clients.
Definitely not.
And on client side one socket for receiving data and another for reply back to server.
Definitely not.
Peers will always want to respond back to the IP:port the request came from. If you add another port you add an endless configuration difficulty. If you only use one port it's easy. There is no performance or architectural reason to use two ports per process for this.