L'appel système select permet à la machine serveur de surveiller les
connexions de plusieurs clients et de vérifier quel client
a envoyé les données au processus. L'appel système Select est donc utilisé pour surveiller
plusieurs clients qui sont déjà connectés
au serveur et en utilisant l'appel système Select, le serveur
continue à surveiller les connexions de plusieurs clients et à vérifier quel client a envoyé
des données et quel client a besoin d'un service. Vous pouvez donc comprendre
cela comme suit : supposons qu'il y ait un client C1, un client
C2 et un client C3. Tous ces clients sont connectés
au serveur Right. So all these clients
that is C 1 C 2 C 3 are already
connected with the server S so at any point of time
the client C 1 can send a data
to the server S, a client C 2 can send data to the server
S or a client C 3 can send a data
to the server S so using select system call the server
S Monitors the corrections of the client C 1 C 2 and C 3 at the same
time That is in whatever order or in whatever
sequence any of these clients sends
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
client needs a service Right so select system call helps the server S to achieve
Simultaneous monitor of connected clients
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
S, So using select system call the server S not only can monitor the existing connected clients But it can also monitor
the new connection initiation request that is sent by
the new client to the server Right so
Le
serveur débloque donc l'appel système de sélection lorsque
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
de connexion ou d'une nouvelle demande de données sur une connexion existante, n'est-ce pas ?
Dans ce dernier cas, le serveur doit donc déterminer quel client
a envoyé les données. En effet, le serveur peut se débloquer de l'appel système select lorsque le client
c2 a envoyé les données ou lorsque le client
c3 a envoyé les données. Ainsi, lorsque le serveur se débloque de l'appel
système select, il doit identifier qu'il est débloqué de l'appel système
select à cause de quel client. un socket pour détecter l'arrivée de nouvelles demandes de
connexion de la part d'un nouveau
client Ainsi, ce socket principal, une fois créé par le
serveur, est utilisé pour donner naissance au reste des descripteurs de fichiers de communication
pour les clients Nous avons déjà visualisé ce scénario dans la conférence d'introduction de
ce module Ainsi, C fournit une structure de données prédéfinie appelée fd_set, qui est une collection
de descripteurs de fichiers. so you can define the variable reafds_set
of data type fd_set So fd_set
is actually Data type that is provided by standard C API s and it is used as a collection
of file descriptors So remember
file descriptors are simple integers So fd_set is nothing, but it
is a collection of file
descriptors, which the server is maintaining So we will discuss more about this fd_set
when we will be actually discussing the implementation of TCP server So guys let us have
a separate discussion on fd_set data store
that is provided by a standard C API So C provides a
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
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
fd_set is actually a Collection so you can visualize this data
structure as a collection So initially let us
assume that this collection is empty now suppose you have a server s and there is a client
C Le serveur va donc invoquer l'appel système accept et créer un descripteur de fichier de
communication pour le client C 1. Soit ce descripteur de fichier
de communication est 6 Donc 6 sera ajouté à l'ensemble
reafds De même, lorsque le client C 2 se connecte au serveur
S, celui-ci crée un descripteur de fichier de communication pour le client
C 2 Soit ce descripteur de fichier de communication est 7 Donc 7 sera ajouté à l'ensemble fd_set ou reafds De même,
quel que soit le nombre de descripteurs
de fichier de communication que le serveur a créés pour servir les
clients connectés. Tous ces descripteurs de fichiers de communication seront ajoutés
à ce fd_set Right, de sorte que fd_set
est en fait une structure de données intégrée fournie par l'API C qui peut stocker et maintenir
les descripteurs de fichiers de communication dans la programmation des sockets.