WEBVTT

00:05.390 --> 00:11.570
Nous aborderons donc l'exemple suivant, qui est un exemple un peu plus compliqué de mise en œuvre

00:11.570 --> 00:12.830
d'un serveur TCP.

00:12.830 --> 00:19.400
Dans cet exemple, notre serveur TCP aurait en fait la capacité de gérer plusieurs clients en

00:19.400 --> 00:20.330
même temps.

00:20.510 --> 00:27.140
Cela signifie que notre serveur TCP maintient plusieurs descripteurs de fichiers de communication pour communiquer

00:27.140 --> 00:29.060
avec plusieurs clients.

00:29.510 --> 00:34.310
Dans cet exemple, nous verrons donc que notre serveur TCP se maintiendra.

00:35.730 --> 00:40.710
Un ensemble de descripteurs de fichiers utilisant la structure de données fd underscore set.

00:42.570 --> 00:48.030
Vous saurez alors plus clairement quelle est l'utilisation potentielle de cette structure de données.

00:50.190 --> 00:55.860
Faisons donc une démonstration du client TCP et du serveur Dhcp que nous venons d'étudier jusqu'à

00:55.860 --> 00:56.640
présent.

00:56.670 --> 01:00.180
Sur la gauche, je vais donc lancer le client TCP.

01:01.350 --> 01:05.890
Vous pouvez donc voir que nous avons un fichier TCP client dot C.

01:05.910 --> 01:08.910
Vous devez compiler ce fichier en utilisant

01:12.480 --> 01:14.970
GCC moins O et le client TCP.

01:15.420 --> 01:18.510
Le programme client TCP est donc compilé.

01:18.510 --> 01:21.780
Vous pouvez voir qu'il crée un client TCP exécutable.

01:21.810 --> 01:24.540
Vous pouvez simplement exécuter le client TCP.

01:25.020 --> 01:29.280
Mais avant de lancer le client TCP, démarrons le serveur TCP.

01:30.210 --> 01:33.780
Vous devez donc compiler le serveur TCP également.

01:36.310 --> 01:40.480
N'oubliez pas que la fonctionnalité de serveur TCP est mise en œuvre dans les serveurs TCP.

01:40.690 --> 01:42.670
Je vais donc compiler ce fichier.

01:47.280 --> 01:54.870
Il va donc créer un exécutable de serveur TCP ici et vous pouvez simplement exécuter cet exécutable.

01:55.770 --> 01:59.610
Notre serveur TCP a donc démarré et il est bloqué sur le système.

01:59.610 --> 02:00.690
Sélectionner l'appel.

02:02.640 --> 02:04.110
En ce moment même.

02:04.110 --> 02:06.120
Commençons par le client TCP.

02:09.970 --> 02:16.810
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

02:16.810 --> 02:21.160
immédiatement la demande d'établissement de la connexion au serveur.

02:21.610 --> 02:27.220
Vous pouvez donc voir que le serveur a reçu la demande de connexion du client à partir de l'adresse IP.

02:27.220 --> 02:36.370
127. 0. 0. 1 et le numéro de port attribué par le système d'exploitation au client est 43930.

02:37.690 --> 02:45.760
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.

02:45.760 --> 02:49.450
Il s'agit de l'adresse IP par défaut de votre machine.

02:50.740 --> 02:56.500
Vous pouvez donc exécuter le programme client et le programme serveur dans différentes fenêtres de terminal

02:56.500 --> 03:00.010
et ils peuvent communiquer entre eux à l'aide de l'adresse IP.

03:00.010 --> 03:03.040
127. 0. 0. 1.

03:04.830 --> 03:09.210
Le client demande maintenant à l'utilisateur de saisir la valeur de a.

03:09.240 --> 03:14.430
Supposons que nous inscrivions la valeur de A comme dix et la valeur de B comme 20.

03:15.210 --> 03:18.690
Vous pouvez donc voir que le serveur a reçu quelque chose du client.

03:19.080 --> 03:26.970
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

03:26.970 --> 03:28.080
au client.

03:28.440 --> 03:32.220
Le client reçoit donc l'addition de ces deux valeurs comme étant 30.

03:32.760 --> 03:38.040
De nouveau, le client demande à l'utilisateur de saisir les valeurs de A et B.

03:40.050 --> 03:44.310
Vous voyez donc que la communication se fait entre le client et le programme serveur.

03:44.520 --> 03:50.610
Vous pouvez exécuter le serveur TCP et le client TCP sur différentes machines virtuelles de votre installation

03:50.610 --> 03:52.680
si vous avez créé une topologie.

03:52.680 --> 03:54.660
Mais dans ce cas, l'adresse IP.

03:54.660 --> 03:58.740
127. 0. 0. 1 ne fonctionne pas.

03:59.130 --> 04:05.640
Vous devrez vraiment spécifier la bonne adresse IP du processus serveur TCP.

04:06.270 --> 04:11.490
Comme vous pouvez le voir dans cet exemple, si vous exécutez le processus de serveur TCP sur une machine

04:11.490 --> 04:18.300
virtuelle distincte, vous devrez spécifier l'adresse IP, qui est égale à l'adresse IP de n'importe quelle interface locale de cette

04:18.300 --> 04:19.380
machine serveur.

04:19.680 --> 04:25.110
Il peut s'agir de l'adresse IP de n'importe quelle interface locale, y compris les interfaces de bouclage.

04:26.680 --> 04:31.540
Et oui, vous devez choisir un numéro de port à attribuer à votre serveur Dhcp.

04:32.500 --> 04:38.620
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

04:38.620 --> 04:39.700
sur la même machine.

04:39.700 --> 04:42.220
Vous pouvez également choisir différentes machines.

04:42.490 --> 04:49.120
Nous allons maintenant discuter de la conception de notre serveur Dhcp, qui peut en fait maintenir

04:49.120 --> 04:55.900
les connexions multiples de plusieurs clients et en même temps répondre et servir ces multiples clients

04:55.900 --> 04:57.550
en même temps.

04:57.850 --> 05:05.470
Pour l'instant, notre serveur TCP est limité par le fait qu'il ne peut pas communiquer ou recevoir plus d'un client

05:05.470 --> 05:06.460
à la fois.

05:06.850 --> 05:12.700
Par exemple, vous pouvez voir que notre serveur TCP est en train de communiquer avec ce client.

05:12.730 --> 05:15.700
Supposons qu'un autre client se présente.

05:16.180 --> 05:18.220
Vous pouvez créer une nouvelle fenêtre.

05:20.240 --> 05:27.250
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.

05:27.260 --> 05:31.550
C'est donc comme si vous commenciez avec un nouveau client.

05:31.730 --> 05:39.860
Et dès que vous exécutez ce nouveau client dans la nouvelle fenêtre, vous pouvez voir que notre serveur ne répond

05:39.860 --> 05:41.330
pas à ce client.

05:42.740 --> 05:48.050
La raison en est qu'à ce moment-là, notre serveur est bloqué en réception par un appel système.

05:48.650 --> 05:56.180
Notre serveur TCP ne répondra au nouveau client que lorsque notre serveur TCP aura bloqué.

05:56.210 --> 05:58.100
Lors d'un appel système sélectionné.

06:00.680 --> 06:07.460
Et surveiller le descripteur de fichier de la socket principale afin de détecter les nouvelles demandes d'établissement de connexion

06:07.460 --> 06:08.230
du client.

06:08.240 --> 06:15.170
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

06:15.170 --> 06:17.300
de connexion de la part d'un client.

06:17.300 --> 06:23.600
C'est la raison pour laquelle notre serveur TCP ne répond pas à ce nouveau client.

06:25.800 --> 06:26.220
C'est vrai.

06:26.220 --> 06:32.610
Dans l'exemple suivant, nous allons discuter du serveur TCP qui peut gérer plusieurs clients

06:32.640 --> 06:37.050
et un tel serveur TCP est appelé serveur TCP avec multiplexage.
