WEBVTT

00:05.120 --> 00:10.030
L'appel système select permet à la machine serveur de surveiller les

00:10.700 --> 00:14.680
connexions de plusieurs clients et de vérifier quel client

00:15.289 --> 00:21.699
a envoyé les données au processus. L'appel système Select est donc utilisé pour surveiller

00:23.150 --> 00:25.869
plusieurs clients qui sont déjà connectés

00:26.449 --> 00:30.249
au serveur et en utilisant l'appel système Select, le serveur

00:30.770 --> 00:36.789
continue à surveiller les connexions de plusieurs clients et à vérifier quel client a envoyé

00:37.339 --> 00:42.189
des données et quel client a besoin d'un service. Vous pouvez donc comprendre

00:43.039 --> 00:46.989
cela comme suit : supposons qu'il y ait un client C1, un client

00:47.089 --> 00:53.619
C2 et un client C3. Tous ces clients sont connectés

00:54.499 --> 01:00.279
au serveur Right. So all these clients

01:01.249 --> 01:06.339
that is C 1 C 2 C 3 are already

01:06.560 --> 01:15.999
connected with the server S so at any point of time

01:16.550 --> 01:21.819
the client C 1 can send a data

01:23.330 --> 01:32.919
to the server S, a client C 2 can send data to the server

01:33.830 --> 01:39.099
S or a client C 3 can send a data

01:40.940 --> 01:49.960
to the server S so using select system call the server

01:52.280 --> 02:03.879
S Monitors the corrections of the client C 1 C 2 and C 3 at the same

02:04.610 --> 02:11.889
time That is in whatever order or in whatever

02:11.890 --> 02:18.520
sequence any of these clients sends

02:19.970 --> 02:40.359
a data to the server S the server S will be in a position to Identify that which client has sent a data and which

02:40.940 --> 02:55.239
client needs a service Right so select system call helps the server S to achieve

02:56.209 --> 03:04.400
Simultaneous monitor of connected clients

03:04.400 --> 03:30.760
In addition, suppose there is a client C 4 which is not connected to the server S but sends a new connection initiation request to the server

03:31.519 --> 03:53.979
S, So using select system call the server S not only can monitor the existing connected clients But it can also monitor

03:55.730 --> 04:05.979
the new connection initiation request that is sent by

04:06.859 --> 04:39.919
the new client to the server Right so

04:39.919 --> 04:39.919
Le

04:40.079 --> 04:42.079
serveur débloque donc l'appel système de sélection lorsque

04:42.569 --> 04:48.889
l'événement un se produit ou que l'événement deux se produit. Lorsque l'appel système de sélection se débloque, le serveur doit donc vérifier s'il s'agit d'une nouvelle demande

04:49.169 --> 04:52.758
de connexion ou d'une nouvelle demande de données sur une connexion existante, n'est-ce pas ?

04:53.759 --> 04:58.038
Dans ce dernier cas, le serveur doit donc déterminer quel client

04:58.799 --> 05:05.599
a envoyé les données. En effet, le serveur peut se débloquer de l'appel système select lorsque le client

05:05.909 --> 05:08.539
c2 a envoyé les données ou lorsque le client

05:09.869 --> 05:14.419
c3 a envoyé les données. Ainsi, lorsque le serveur se débloque de l'appel

05:14.969 --> 05:19.909
système select, il doit identifier qu'il est débloqué de l'appel système

05:21.899 --> 05:29.509
select à cause de quel client. un socket pour détecter l'arrivée de nouvelles demandes de

05:30.029 --> 05:32.029
connexion de la part d'un nouveau

05:33.239 --> 05:36.768
client Ainsi, ce socket principal, une fois créé par le

05:36.769 --> 05:42.439
serveur, est utilisé pour donner naissance au reste des descripteurs de fichiers de communication

05:43.409 --> 05:49.398
pour les clients Nous avons déjà visualisé ce scénario dans la conférence d'introduction de

05:51.419 --> 05:57.288
ce module Ainsi, C fournit une structure de données prédéfinie appelée fd_set, qui est une collection

05:57.749 --> 06:04.999
de descripteurs de fichiers. so you can define the variable reafds_set

06:05.519 --> 06:08.149
of data type fd_set So fd_set

06:08.789 --> 06:15.618
is actually Data type that is provided by standard C API s and it is used as a collection

06:15.800 --> 06:18.649
of file descriptors So remember

06:18.649 --> 06:24.768
file descriptors are simple integers So fd_set is nothing, but it

06:25.469 --> 06:27.469
is a collection of file

06:27.719 --> 06:35.629
descriptors, which the server is maintaining So we will discuss more about this fd_set

06:38.189 --> 06:46.079
when we will be actually discussing the implementation of TCP server So guys let us have

06:47.229 --> 06:50.908
a separate discussion on fd_set data store

06:51.430 --> 06:56.009
that is provided by a standard C API So C provides a

06:56.889 --> 07:08.308
data structure called fd_set Which is actually a collection or a set of file descriptors So the data type is fd_set and Reafds

07:08.439 --> 07:21.059
is actually a variable So in socket programming in C We need to use this data structure to maintain our file descriptors So as we said that

07:21.729 --> 07:27.208
fd_set is actually a Collection so you can visualize this data

07:27.789 --> 07:31.859
structure as a collection So initially let us

07:32.559 --> 07:40.289
assume that this collection is empty now suppose you have a server s and there is a client

07:41.379 --> 07:49.349
C Le serveur va donc invoquer l'appel système accept et créer un descripteur de fichier de

07:49.349 --> 07:52.648
communication pour le client C 1. Soit ce descripteur de fichier

07:53.439 --> 07:57.148
de communication est 6 Donc 6 sera ajouté à l'ensemble

07:59.019 --> 08:02.879
reafds De même, lorsque le client C 2 se connecte au serveur

08:03.129 --> 08:07.979
S, celui-ci crée un descripteur de fichier de communication pour le client

08:09.189 --> 08:17.129
C 2 Soit ce descripteur de fichier de communication est 7 Donc 7 sera ajouté à l'ensemble fd_set ou reafds De même,

08:18.639 --> 08:20.639
quel que soit le nombre de descripteurs

08:21.819 --> 08:26.338
de fichier de communication que le serveur a créés pour servir les

08:26.379 --> 08:34.198
clients connectés. Tous ces descripteurs de fichiers de communication seront ajoutés

08:35.050 --> 08:37.050
à ce fd_set Right, de sorte que fd_set

08:38.289 --> 08:43.979
est en fait une structure de données intégrée fournie par l'API C qui peut stocker et maintenir

08:44.680 --> 08:50.489
les descripteurs de fichiers de communication dans la programmation des sockets.
