Close
    Search Search

    Communication serveur/client

    Communication serveur/client

    [Cette page devrait à un moment donné être fusionnée avec la désynchronisation Client/Serveur


    Un programme basĂ© sur le rĂ©seau a gĂ©nĂ©ralement 2 cĂ´tĂ©s - serveur et client. Le client, comme son nom l'indique, est la partie du programme qui est traitĂ©e localement pour chaque utilisateur final, et le serveur est une chaĂ®ne de traitement principale qui s'exĂ©cute indĂ©pendamment des clients qui y sont connectĂ©s. Comme mentionnĂ©, les clients peuvent se connecter au serveur, envoyant et recevant Ă  la fois des demandes et des informations en retour. Un serveur, sauf configuration contraire, n'a pas de limite au nombre de clients pouvant y ĂŞtre connectĂ©s Ă  un moment donnĂ©, mais un client ne peut ĂŞtre connectĂ© qu'Ă  un seul serveur Ă  la fois. Le principal goulot d'Ă©tranglement dans toute application rĂ©seau est la bande passante Internet, en d'autres termes, la quantitĂ© de donnĂ©es au fil du temps qui peuvent ĂŞtre envoyĂ©es depuis le serveur (Ă©galement la quantitĂ© de donnĂ©es que les clients doivent envoyer au serveur, bien qu'il s'agisse d'un problème moins important) . Cela signifie qu'une telle application doit essayer de minimiser la quantitĂ© de communication entre le client et le serveur et n'envoyer que les donnĂ©es nĂ©cessaires (autrement impossibles Ă  obtenir) entre les 2, telles que les entrĂ©es utilisateur, les Ă©vĂ©nements Ă  l'Ă©chelle du serveur, les autres activitĂ©s des clients, etc. 



    Contenu

    CLIENT

    Dans Minecraft, le client est votre jeu local exĂ©cutĂ© sur votre machine et est en charge de tous les calculs locaux, tels que les graphiques, l'audio et l'interface utilisateur (interface utilisateur), ainsi que certains des calculs du serveur, car le client s'exĂ©cute une semi-copie locale du serveur, qui est lĂ  pour rĂ©duire l'utilisation de la bande passante. A partir de maintenant, nous appellerons cette semi-copie locale du serveur simplement "le client". Le client calcule certaines choses de la mĂŞme manière que le serveur, avec de lĂ©gères variations. Par exemple, le client n'a pas accès Ă  la graine mondiale et ne peut donc pas traiter les alĂ©as qui se produisent sur le serveur. Le client ne peut Ă©galement gĂ©rer que ce qu'il a, donc d'autres choses que le serveur gère, comme les actions des autres joueurs, le chat, les commandes et d'autres choses, exclusives au serveur, ne peuvent pas ĂŞtre traitĂ©es par le client. 


    Serveur

    Il existe une distinction concernant la dĂ©finition du serveur dans Minecraft, selon que le jeu est local (solo) ou distant (multijoueur). 

    Si le jeu est exĂ©cutĂ© localement, alors la version locale de la mention du serveur dans la section « Client Â» est toujours prĂ©sente, mais une autre copie complète du serveur est Ă©galement exĂ©cutĂ©e localement. C'est ce qu'on appelle un serveur intĂ©grĂ©, car il est intĂ©grĂ© Ă  l'intĂ©rieur de votre client. Parce qu'un jeu local possède Ă©galement 2 copies du serveur, l'une appelĂ©e "le serveur" (la version complète) et l'autre appelĂ©e "le client" (la semi-copie. Cette distinction est due au fait que le client ne communique toujours que avec la semi-copie, et la semi-copie et la copie complète communiquent toujours entre elles via un gestionnaire de rĂ©seau, bien que l'adresse soit localhost), mĂŞme ce serveur local pourrait avoir des dĂ©synchronisations client/serveur. 


    Si toutefois le serveur est distant, le client ne dispose que d'une semi-copie du serveur, comme dĂ©crit dans la section "Client". Un serveur distant diffère d'un serveur intĂ©grĂ© sur plusieurs points, Ă  savoir les restrictions des joueurs sur les commandes et d'autres choses, mais aussi certaines structures de donnĂ©es uniques, telles que les listes de joueurs, les listes blanches, les listes noires, les listes d'autorisations, etc. Étant donnĂ© que ce serveur est exĂ©cutĂ© sur une machine diffĂ©rente de votre jeu local ("client"), il utilise le rĂ©seau de routage, plus communĂ©ment appelĂ© Internet, pour transfĂ©rer des donnĂ©es entre le serveur et le client, et vice versa. Internet n'est pas parfait et a un certain dĂ©lai variable, ce qui fait que certaines choses fonctionnent moins couramment qu'en mode solo. De plus, Internet peut perdre la connexion de votre cĂ´tĂ©, du cĂ´tĂ© du serveur ou de tout autre Ă©lĂ©ment intermĂ©diaire, ce qui vous oblige Ă  vous dĂ©connecter d'un serveur Ă  l'occasion. 

    Communication

    Le serveur et le client sont tous deux sĂ©parĂ©s et chacun calcule les blocs et les entitĂ©s sĂ©parĂ©ment. Le client est en charge du rendu, du placement des joueurs et de quelques autres mĂ©canismes. Cela signifie qu'il est possible de rendre des blocs qui ne sont pas rĂ©ellement prĂ©sents sur le serveur. Ce sont des blocs fantĂ´mes. Il est possible d'utiliser un bloc fantĂ´me comme point d'ancrage pour le placement d'un autre bloc, permettant ainsi le placement de bloc dans les airs. Les paquets de dommages envoyĂ©s depuis le serveur contiennent un vecteur de direction de knockBack (mĂŞme si aucun knockBack n'est appliquĂ©, auquel cas ce sera le vecteur zĂ©ro), qui prend en considĂ©ration tout ce que le serveur pense qui se passe avec le mouvement du joueur. Cela oblige le client Ă  traiter le mouvement de la mĂŞme manière que le serveur pour 1 gametick, resynchronisant efficacement entre les deux. 



    Voici un exemple d'utilisation d'entités pour pousser le client et de reconnexion de la connexion entre le client et le serveur https://www.youtube.com/watch?v=P7FM1JRbNWo

    Voici un autre exemple d'Ă©lan vertical utilisant des blocs de slime fantĂ´me. Il y a aussi une explication incluse. https://www.youtube.com/watch?v=sFAlX7TKz1s

    Paquets

    Comme mentionné, le client et le serveur, qu'ils soient distants ou non, doivent communiquer entre eux. La méthode standard de communication client-serveur sur Internet (et aussi localement, pour certaines applications, comme Minecraft) est appelée "paquets". Un paquet est un petit paquet d'informations ou de données qui doit être transféré dans un sens entre les deux côtés. Une fois qu'un paquet est généré avec toutes les données qu'il doit contenir, il est envoyé à un gestionnaire de réseau, qui l'enveloppe ensuite d'en-têtes contenant des informations génériques importantes, telles que l'adresse IP d'origine, l'adresse IP de destination, l'heure de génération, etc. En cours de route, il est enveloppé par d'autres en-têtes générés par chaque machine ("routeur") par laquelle il est passé sur son chemin, afin qu'il puisse plus facilement retrouver son chemin, si une réponse est nécessaire. De l'autre côté, il est reçu et déballé de tous ses en-têtes, de sorte que seules les données brutes à l'intérieur sont exportées depuis le gestionnaire de réseau de ce côté et envoyées au processeur de paquets. Ensuite, le contenu du paquet est lu et des actions sont entreprises de manière appropriée, y compris les réponses renvoyées, si nécessaire.

    Les paquets sont généralement de très petits paquets d'informations, ne contenant généralement pas plus de plusieurs centaines d'octets. Leurs informations sont compressées et minimisées, puis extrapolées de l'autre côté en données réelles. Pour cette raison, les deux parties doivent avoir un contrat entre elles sur l'apparence exacte des données. Vous pouvez en savoir plus sur les paquets en ligne. Ce que nous pouvons apprendre sur le comportement de Minecraft à partir de son utilisation des paquets, c'est que (particulièrement ressenti lorsque Internet est lent ou déconnecté) souvent, les données transférées entre le client et le serveur sont perdues, retardées différemment ou modifiées, en raison des défauts de Internet, s'appliquant différemment à chaque petit paquet d'informations, provoquant une certaine fluctuation dans le flux de données transféré entre le client et le serveur (et vice versa).




    ajouter un commentaire de Communication serveur/client
    Commentaire envoyé avec succès ! Nous l'examinerons dans les prochaines heures.