Nous aborderons donc l'exemple suivant, qui est un exemple un peu plus compliqué de mise en œuvre
d'un serveur TCP.
Dans cet exemple, notre serveur TCP aurait en fait la capacité de gérer plusieurs clients en
même temps.
Cela signifie que notre serveur TCP maintient plusieurs descripteurs de fichiers de communication pour communiquer
avec plusieurs clients.
Dans cet exemple, nous verrons donc que notre serveur TCP se maintiendra.
Un ensemble de descripteurs de fichiers utilisant la structure de données fd underscore set.
Vous saurez alors plus clairement quelle est l'utilisation potentielle de cette structure de données.
Faisons donc une démonstration du client TCP et du serveur Dhcp que nous venons d'étudier jusqu'à
présent.
Sur la gauche, je vais donc lancer le client TCP.
Vous pouvez donc voir que nous avons un fichier TCP client dot C.
Vous devez compiler ce fichier en utilisant
GCC moins O et le client TCP.
Le programme client TCP est donc compilé.
Vous pouvez voir qu'il crée un client TCP exécutable.
Vous pouvez simplement exécuter le client TCP.
Mais avant de lancer le client TCP, démarrons le serveur TCP.
Vous devez donc compiler le serveur TCP également.
N'oubliez pas que la fonctionnalité de serveur TCP est mise en œuvre dans les serveurs TCP.
Je vais donc compiler ce fichier.
Il va donc créer un exécutable de serveur TCP ici et vous pouvez simplement exécuter cet exécutable.
Notre serveur TCP a donc démarré et il est bloqué sur le système.
Sélectionner l'appel.
En ce moment même.
Commençons par le client TCP.
Vous pouvez donc voir ici que dès que je démarre le client TCP, il crée son descripteur de fichier de communication et envoie
immédiatement la demande d'établissement de la connexion au serveur.
Vous pouvez donc voir que le serveur a reçu la demande de connexion du client à partir de l'adresse IP.
127. 0. 0. 1 et le numéro de port attribué par le système d'exploitation au client est 43930.
Nous pouvons donc voir que l'adresse IP du client est 127. 0. 0. 1, ce qui n'est rien, mais il s'agit d'un hôte local.
Il s'agit de l'adresse IP par défaut de votre machine.
Vous pouvez donc exécuter le programme client et le programme serveur dans différentes fenêtres de terminal
et ils peuvent communiquer entre eux à l'aide de l'adresse IP.
127. 0. 0. 1.
Le client demande maintenant à l'utilisateur de saisir la valeur de a.
Supposons que nous inscrivions la valeur de A comme dix et la valeur de B comme 20.
Vous pouvez donc voir que le serveur a reçu quelque chose du client.
C'est-à-dire qu'il a reçu les valeurs de A et B, puis il a additionné ces valeurs et renvoyé le résultat
au client.
Le client reçoit donc l'addition de ces deux valeurs comme étant 30.
De nouveau, le client demande à l'utilisateur de saisir les valeurs de A et B.
Vous voyez donc que la communication se fait entre le client et le programme serveur.
Vous pouvez exécuter le serveur TCP et le client TCP sur différentes machines virtuelles de votre installation
si vous avez créé une topologie.
Mais dans ce cas, l'adresse IP.
127. 0. 0. 1 ne fonctionne pas.
Vous devrez vraiment spécifier la bonne adresse IP du processus serveur TCP.
Comme vous pouvez le voir dans cet exemple, si vous exécutez le processus de serveur TCP sur une machine
virtuelle distincte, vous devrez spécifier l'adresse IP, qui est égale à l'adresse IP de n'importe quelle interface locale de cette
machine serveur.
Il peut s'agir de l'adresse IP de n'importe quelle interface locale, y compris les interfaces de bouclage.
Et oui, vous devez choisir un numéro de port à attribuer à votre serveur Dhcp.
Il s'agissait donc d'une démonstration de la manière de compiler et d'exécuter le serveur Dhcp et le programme client Dhcp
sur la même machine.
Vous pouvez également choisir différentes machines.
Nous allons maintenant discuter de la conception de notre serveur Dhcp, qui peut en fait maintenir
les connexions multiples de plusieurs clients et en même temps répondre et servir ces multiples clients
en même temps.
Pour l'instant, notre serveur TCP est limité par le fait qu'il ne peut pas communiquer ou recevoir plus d'un client
à la fois.
Par exemple, vous pouvez voir que notre serveur TCP est en train de communiquer avec ce client.
Supposons qu'un autre client se présente.
Vous pouvez créer une nouvelle fenêtre.
Vous pouvez donc voir que je peux exécuter le client qui est le même exécutable client mais dans une fenêtre différente.
C'est donc comme si vous commenciez avec un nouveau client.
Et dès que vous exécutez ce nouveau client dans la nouvelle fenêtre, vous pouvez voir que notre serveur ne répond
pas à ce client.
La raison en est qu'à ce moment-là, notre serveur est bloqué en réception par un appel système.
Notre serveur TCP ne répondra au nouveau client que lorsque notre serveur TCP aura bloqué.
Lors d'un appel système sélectionné.
Et surveiller le descripteur de fichier de la socket principale afin de détecter les nouvelles demandes d'établissement de connexion
du client.
Mais à ce moment-là, notre serveur TCP est bloqué en réception par l'appel système, et ne peut donc détecter aucune nouvelle demande
de connexion de la part d'un client.
C'est la raison pour laquelle notre serveur TCP ne répond pas à ce nouveau client.
C'est vrai.
Dans l'exemple suivant, nous allons discuter du serveur TCP qui peut gérer plusieurs clients
et un tel serveur TCP est appelé serveur TCP avec multiplexage.