Il faut une unique socket qui reçoit tout de la part du client/serveur, et du coup un seul endroit dans le code qui gère la réception. Ca n'a aucun sens de vouloir recevoir certaines données à un endroit, et d'autres ailleurs. Tu te compliques la vie pour rien.
Pour distinguer les données, il faut identifier ce que tu envoies (i.e. le préfixer par un octet qui indique ce qui suit).