Cours de programmation réseau en C++ - chapitre 3 : TCP - mise en place de votre protocole
Un tutoriel de Bousk
Le 2016-07-07 18:37:39, par Bousk, Rédacteur/Modérateur
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/
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.
-
François DORINExpert éminent séniorBonjour,
Envoyé par Bousk Envoyé par Bousk
Un mutex est fait pour s'assurer qu'une ressource n'est utilisée que par une et une seule tâche en même temps. Et un bon mutex ne sert à rien 99,9% du temps
Mais hormis ce point, good tutorialle 26/01/2017 à 17:11 -
bourebCandidat au ClubBonjour,
merci pour ce cour bien utile pour poser les bases.
Juste un petit problème rencontré lors de la compilation avec Visual Studio 2019 sur Windows 10.
Le projet TP01 est ok mais à partir du TP02 il faut remplacer:Code : #if _WIN32_WINNT == _WIN32_WINNT_WINBLUE
Code : #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
le 22/02/2020 à 14:41 -
jopopmkMembre expertSalut,
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++le 08/07/2016 à 11:35 -
BouskRédacteur/ModérateurTu as une version compilée avec VS2015 dans Samples/Win10, il faut les redistributables VS2015 pour la lancer.
Les codes sources sont accessibles via le lien "Télécharger les codes sources du cours" tout en bas de l'article. Un lien a été ajouté plus haut pour plus de clarté.
Sinon tu peux la recompiler depuis les solutions, VS2013 & VS2015 sont proposées. Elles sont upgradables vers VS2017 sans soucis.
Il y a un problème avec les versions de Win10 plus récentes, il faut changer les tests #if _WIN32_WINNT == _WIN32_WINNT_WINBLUE en #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE dams Main.cpp et Clients_Sample/Sockets.hpp
L'article a été mis à jour avec ces corrections.le 20/01/2019 à 16:45 -
BouskRédacteur/ModérateurAs-tu lu l'article entier ? Pourquoi elle ne fonctionnerait pas ?
La première moitié de l'article parle et montre les problèmes d'endianness et indique comment les résoudre via des conversions.
Les implémentations suivantes utilisent ces conversions pour contrer ce problème.le 12/09/2019 à 16:23 -
BouskRédacteur/ModérateurSalut,
tu veux dire exactement ce qui est fait dans la seule partie qui le nécessite jusque là ?
Sinon je vois pas où tu en attends plus.le 09/07/2016 à 13:20 -
jblecanardMembre expertPour aller plus loin, peut-être que ça serait bien d'aborder la "vraie" manière de gérer de multiples connexions côté serveur, à savoir, utiliser les boucles d'événements basées sur epoll, kqueue ou IO Completion Ports. Pourquoi pas en utilisant une bibliothèque qui les abstrait comme libevent.
Bon c'est vraiment pour la partie la plus avancée du cours, mais ça permet justement de ne pas utiliser de threads. le 27/01/2017 à 17:15 -
Jordi123Candidat au ClubSuper cours, merci pour le partage.le 05/11/2019 à 16:20
-
BouskRédacteur/ModérateurHello,
je viens de revoir toutes les archives des TP TCP et la compilation devrait être correcte sur vs2019. #if _WIN32_WINNT == _WIN32_WINNT_WINBLUE a normalement été remplacé de partout par #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE. N'hésitez pas à me faire savoir s'il reste une coquille quelque part.le 21/03/2020 à 23:13 -
BouskRédacteur/ModérateurNon UDP n'est pas une solution pour scaler le miniserveur.
Pour scaler il faut changer le traitement des connexions et échanges de données (avec kqueue, epoll, .. mentionnés vers le début du thread).
UDP devrait être utilisé pour du gameplay (temps réel) où le nombre de connexions devrait déjà être limité par les règles gameplay ou les performances nécessaires.
Pour les lecteurs, je suis désolé du manque de contenus : le temps me manque depuis 3 ans. le 24/04/2023 à 15:51