Bonjour à tous

une petite question toute bête, mais je n'arrive pas à trouver la réponse malgré mes recherches

Par exemple dans le cas d'un client, je souhaite que celui-ci puisse :
-recevoir les messages d'un serveur
-envoyer des messages au serveur quand l'utilisateur valide son message

je travaille pour le moment juste avec la console, et je suis sur Windows 7

- Seulement, je ne vois pas comment il serait possible à la fois d'attendre un message du serveur avec recv(), et d'attendre un message de l'utilisateur avec fgets(), alors que mon code s'exécute de manière séquentiel.
Est-on obligé dans ce cas d'utiliser deux threads ? j'ai aussi entendu parler d'une fonction select(), mais je n'osais pas me lancer dans quelque chose que je ne connais pas et peut être inapproprié

- Enfin, avez vous une méthode simple et plus adapté pour l'utilisateur d'afficher les messages en même temps de taper des messages ? (parce que sur la console il suffit que l'utilisateur reçoive un message pendant qu'il écrit lui-même un message, et c'est le drame comme vous pouvez imaginer) Ou bien faudra t-il que j'utilise une bibliothèque graphique ?

Merci d'avance !