So going forward we will be going to discuss
the accept system So we will be going
to write two applications
client dot C And server dot
C Client dot C actually represents a client C and server dot Cactually represents
a TCP server So in file client dot C we will going to implement the functionality
of the client that is the client will going to
initiate the request and In server dot C file will be going to implement the functionality of the TCP server that is receiving the client
correction request receiving the client
data Processing the data and replying back to the client We will go in to implement server functionality in server dot C and
client functionality in client dot C now Let us discuss
the accept system call First of all accept system
call is used by the TCP server that accept system call is used on the server side and What is the purpose of accept system call the accept system call
is used to accept the new client connection request by the server So you have
a client C and you have a server s The
dans
la demande d'initiation de connexion Le client dit qu'il veut établir une connexion
TCP avec vous Il communique cette information
au serveur L'appel système d'acceptation du côté du serveur est utilisé pour accepter la nouvelle demande de connexion
du client C'est le but de l'appel système
d'acceptation Rappelez-vous que TCP est un protocole orienté connexion
C'est-à-dire que le client et le serveur doivent d'abord établir une connexion dédiée avant de pouvoir participer
à toute activité d'échange de données Droit.
La
première chose que le client
et le serveur doivent faire est donc d'établir
une connexion TCP bidirectionnelle Avant tout échange
de données entre le client et le serveur
Le client et le serveur doivent établir une connexion TCP
bidirectionnelle entre eux L'initiation de cette connexion est effectuée par
le client et le client le fait en envoyant une demande d'initiation de connexion
au serveur L'appel système Accept du côté serveur
est en fait utilisé pour traiter la demande d'initiation de connexion déclenchée par le client
Disons, par exemple, que lorsque vous vous connectez à Facebook votre machine envoie des demandes
de connexion aux serveurs Facebook Les serveurs Facebook acceptent votre demande de connexion en utilisant l'appel système Accept Maintenant vous pouvez envoyer des données aux serveurs Facebook
et les serveurs Facebook peuvent mettre à jour votre page avec des notifications et des flux Le seul but
de l'appel système Accept est donc d'établir la connexion entre les deux machines, c'est-à-dire la machine
client et la machine serveur, et cela se fait en effectuant une poignée de main TCP à trois voies S
Qu'est-ce que la poignée ? Le
handle n'est rien, c'est juste une valeur entière, par exemple 6. 6 représente en fait une connexion
dédiée entre le client et le serveur.
En utilisant ce handle, le serveur effectue
toutes les communications futures avec ce client. Ce handle est appelé descripteur
de fichier de communication. C'est pourquoi on l'appelle descripteur de fichier de communication
parce que la communication réelle entre le client et le serveur après l'établissement de la connexion se fait à l'aide
de ce handle C'est pourquoi on l'appelle
descripteur fin de communication Ainsi, vous pouvez voir le diagramme
: vous avez un client et le serveur TCP s'exécute quelque
part dans le réseau. La première chose que fait le client
est d'envoyer une demande d'établissement de connexion
au serveur TCP. Le client envoie la demande d'initiation de connexion en utilisant
l'appel système connect Par conséquent, l'appel système connect
n'est utilisé que du côté client Lorsque le serveur reçoit la demande d'initiation de connexion du client, la deuxième
chose La première chose que fait le serveur est d'accepter la demande de
connexion du client en utilisant l'appel système accept Dès que
l'appel système accept est invoqué, L'appel système accept renvoie le descripteur de fichier de communication Qui n'est rien d'autre
qu'une valeur entière en utilisant ce descripteur
de fichier de communication, le serveur effectue tous les échanges de données avec le client Ainsi, discutons du synopsis
de cet appel système accept ici Vous pouvez voir qu'il s'agit du synopsis de l'appel
système accept. L'appel système accept accepte trois arguments Le
premier argument est la valeur entière qui est le descripteur
de fichier TCP de la socket principale. le deuxième argument de l'appel système
accept est en fait le pointeur
sur la structure de type structs sockaddr star. Il s'agit du type de structure standard fourni par les
API C. Cette structure que vous
passez ici est en fait une structure vide, c'est-à-dire
qu'elle ne contient aucune donnée.
Lorsque le client envoie une demande de connexion au serveur,
il dispose d'une adresse IP et du numéro de port sur lequel il écoute. Ces informations sont stockées
dans la structure d'adresse
du client du côté du serveur. Ainsi, sur le serveur, les informations
du client, à savoir l'adresse IP
et le numéro de port, sont stockées dans cette
structure lorsque la demande de connexion
du client arrive sur le serveur De cette façon, le serveur
est capable de stocker l'identité du client afin que le serveur puisse ensuite répondre au client Le troisième
argument de l'appel système accept est l'adresse len qui
n'est rien d'autre que la taille de cette structure qui est la taille de la structure sockaddr de Struts
et donc le troisième argument est en fait une
constante Le descripteur de fichier master socket est le descripteur de fichier du
socket que le serveur a ouvert pour écouter la nouvelle
demande de connexion du client à l'aide de l'appel système socket Nous allons donc développer davantage ce descripteur de fichier master socket est créé à l'aide de l'appel système socket
et le descripteur de fichier master socket est utilisé par le serveur pour détecter les nouvelles demandes de connexion du client Il est donc utilisé
pour détecter la nouvelle demande de connexion du client à l'aide de l'appel système accept Rappelez-vous que le premier argument de l'appel système accept est
que le descripteur de fichier master socket est le descripteur de fichier master socket qui est utilisé par le serveur pour détecter les nouvelles demandes de connexion
du client
Lorsque
nous ferons un tour de code, nous discuterons de ce type d'appels système. Nous ferons donc un tour de code et vous comprendrez mieux comment différentes choses s'assemblent et fonctionnent ensemble.