IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Cours sur la programmation réseau [Tutoriel]


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut Cours sur la programmation réseau
    Bonjour à tous,

    je vous présente un projet que je mène actuellement, à savoir l'écriture d'un cours de programmation réseau, sur l'utilisation de la bibliothèque socket, en C++.
    Il s'agit de la version réécrite et améliorée d'un cours que j'ai dispensé aux étudiants de l'ESGI Paris en 2015.
    Le but de cette série est de démystifier l'utilisation du réseau et de vous permettre d'en profiter dans vos applications.

    Chaque partie présente simplement une composante (connexion, envoi de données…) et vous permet de comprendre son fonctionnement, puis de la mettre en pratique immédiatement, via un TP et des codes sources fournis.
    À la fin de cette série, vous serez en possession des briques élémentaires nécessaires à la mise en place d'échanges réseau dans votre programme, sous forme de classes C++ utilisant l'API socket de votre système.

    Dans un premier temps, nous apprendrons à appréhender les échanges en TCP, d'abord en tant que simple client, puis comme serveur.
    Ensuite nous verrons l'utilisation d'UDP.
    L'utilisation de threads et mutex sera également abordée.
    Enfin certaines techniques plus spécifiques aux jeux vidéos seront présentées sous forme d'articles, publiés dans la section idoine.

    Les articles seront diffusés au fur et à mesure de leur (ré)écriture. Retrouvez-les ci-dessous.
    Introduction
    TCP
    - Premiers pas
    - Envoi et réception
    - Mise en place du protocole
    - Premiers pas en tant que serveur
    - Envoi et réception depuis le serveur
    - Mode non bloquant pour le client
    - Quelle architecture de client visée ?
    - Un premier serveur : miniserveur

    UDP
    - Premiers pas
    - Gérer les pertes et duplications d'identifiants
    - S'assurer du bon fonctionnement de son code
    - Créer son protocole par-dessus UDP
    - Découper et réunifier des paquets & création d'un protocole ordonné non fiable
    - Envoi de paquets ordonné fiable
    - Combiner tous les protocoles : les canaux de communication
    - Gérer des connexions entre machines
    - Debugger une application en réseau

    Jeux
    - Un premier jeu : Morpion

    Divers
    - Multi-threading et mutex
    - Bases de la sérialisation
    - Sérialisation de bits
    - Sérialisation avancée

    Retrouvez tous les cours et tutoriels C++ de Developpez.com
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  2. #2
    Membre confirmé
    Avatar de VBurel
    Profil pro
    Développeur Indépendant
    Inscrit en
    Août 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Indépendant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 140
    Billets dans le blog
    1
    Par défaut
    quand vous en serez à l'UDP. si vous voulez faire un cas pratique avec de l'audio,
    je vous invite à faire un exemple d'implémentation VBAN (avec mon support si besoin).
    plus d'info: http://vb-audio.pagesperso-orange.fr...eeter/vban.htm

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut Cours programmation réseau - TCP01 - Premiers pas
    Voici la première partie plus concrète.
    Commençons par les échanges via protocole TCP, du point de vue du client dans un premier temps.
    Au programme : création de socket, connexion à un serveur dont on connait l'IP et passage en revue de quelques fonctions utiles de manière générale.

    http://bousk.developpez.com/cours/re...-premiers-pas/


    Retrouvez tous les cours et tutoriels C++ de Developpez.com
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut Cours programmation réseau - TCP02 - Envoi et réception
    Après la mise en bouche assez conséquente, voyons maintenant comment envoyer et recevoir des données via un socket TCP préalablement connecté.
    Cette courte partie présente les fonctions send et recv dont nous verrons l'utilisations de manière plus poussée dans la partie suivante qui arrive très bientôt.

    http://bousk.developpez.com/cours/re...voi-reception/
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut Cours programmation réseau - TCP03 - Mise en place du protocole
    Partons cette fois un peu plus dans les détails du send et du recv, puisqu'il s'agit de mettre en place son protocole, ses règles d'échange de données, en utilisant des paquets TCP.
    Il s'agit également de la dernière partie de la première série grâce à laquelle nous savons désormais utiliser TCP en tant que client.
    La seconde partie traitera toujours de TCP, mais du point de vue du serveur maintenant.

    http://bousk.developpez.com/cours/re...ace-protocole/
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    petite proposition d'amélioration : montrer la mise en place de macro/commandes prépro pour avoir un code multiplateforme unique. Je suis sûr que ça pourrait intéresser les arpètes qui passeraient sur tes tuto.

    Bonne continuation.

    edit : my bad, j'ai dû lire trop vite ou faire l'impasse sur la partie C++

  7. #7
    Membre actif Avatar de ArnaudNRoses
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 23
    Par défaut Je comprends pas ce code il est dans les tutoriels de Developpez.com
    Dans le tutoriel à cette page : https://bousk.developpez.com/cours/r...ecture-client/

    il y a ce code mais je ne comprends pas cette ligne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class Message
    {
    	public:
    		template<class M>
    		bool is() const { return mType == M::StaticType; }// ICI : COMMENT SE FAIT LA DEDUCTION du type M ??????? Je comprends pas vraiment
    		template<class M>
    		const M* as() const { return static_cast<const M*>(this); }
     
    	protected:
    		enum class Type {
    			Connection,
    			Disconnection,
    			UserData,
    		};
    		Message(Type type)
    			: mType(type)
    		{}
    	private:
    		Type mType;
    };

    Quelqu'un peut-il m'aider ? Merci beaucoup d'avance !!!

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    M est le paramètre template et ceci est un CRTP.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2012, 10h24
  2. Cours sur le programme DEBUG de MS-DOS
    Par Med_be dans le forum x86 16-bits
    Réponses: 6
    Dernier message: 24/02/2011, 19h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo