Tassement d'un tableau

Le but de ce TP est d'écrire un programme serveur, écoutant le port 7777, qui supprime les 0 d'un tableau.  Après s'être connecté, le client envoie dans un premier message la taille du tableau sous la forme d'un entier puis dans un second message l'ensemble du tableau dont chaque élément est un entier.  Après avoir réceptionné les deux messages, le serveur élimine les valeur nulles du tableau reçu et envoie au client dans un premier message la taille du tableau sous la forme d'un entier puis dans un second message l'ensemble du tableau dont chaque élément est un entier.

Vous écrirez quatre versions avec les variation suivantes:

Serveur itératif

Version 1 : serveuri1.c

Le serveur alloue statiquement le tableau des entiers à recevoir contenant au maximum 16 éléments. Si la taille reçue est supérieur à 16 le serveur déconnectera le client. Le serveur devra être capable de traiter les requêtes d'un nombre indéterminé de clients.

Vous écrirez le programme le programme client envoyant un tableau de 10 éléments contenant 5 zéros, puis un tableau de 256 éléments. Le client affichera sur la sortie standard le tableau envoyé et après réception le tableau reçu du serveur.

Version 2 : serveuri2.c

Le serveur alloue dynamiquement la taille du tableau par la fonction de bibliothèque malloc(3), ce qui permettra au serveur de recevoir un tableau contenant un nombre quelconque d'éléments.

Le client sera identique à la question 1.

Serveur parallèle

Écrire les versions parallèles des 2 serveurs précédents : serveurp1.c et serveurp2.c.

Vous n'hésiterez pas à tester vos programmes avec de (très) gros tableaux (plusieurs centaines de milliers, voire plusieurs millions d'éléments).