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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Cours programmation réseau en C++
TCP - envoi et réception depuis le serveur, un tutoriel par Bousk

Le , par Bousk

4PARTAGES

8  0 
Salut à tous,

il est temps que notre serveur passe la première vitesse et soit capable de réceptionner des données de ses clients et leur en envoyer.
Plusieurs modèles sont présentés et testés : multiplier les threads, l'utilisation de select, poll ou de sockets non bloquants.

http://bousk.developpez.com/cours/re...ption-serveur/

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de boureb
Candidat au Club https://www.developpez.com
Le 22/02/2020 à 14:41
Bonjour,
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 : Sélectionner tout
#if _WIN32_WINNT == _WIN32_WINNT_WINBLUE
par

Code : Sélectionner tout
#if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
3  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 20/01/2019 à 16:45
Tu 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.
2  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 12/09/2019 à 16:23
As-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.
2  0 
Avatar de Jordi123
Candidat au Club https://www.developpez.com
Le 05/11/2019 à 16:20
Super cours, merci pour le partage.
1  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 21/03/2020 à 23:13
Hello,
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.
1  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 24/04/2023 à 15:51
Non 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 .
1  0 
Avatar de bacelar
Expert éminent sénior https://www.developpez.com
Le 26/04/2023 à 16:24
Il y a bien d'autres axes d'évolution que le choix des implémentations de protocole de niveau Transport de l'OSI fournies dans les OS "main stream".
- configuration de ces implémentations pour les adapter aux besoins, et pas qu'au niveau 4 de l'OSI (Transport) mais à n'importe quel niveau.
- implémentation customisé d'un composant de la stack réseau, voire de la stack complète via des drivers, qu'ils soient dans un firmware matériel, un driver de périphérique, un driver layer du Kernel, ou des parties "User" de la pile réseau
- Design de protocoles spécifiques utilisant, ou n'utilisant pas des composants de la stack réseau de l'OS,
- Mise en place de hardwares dédiés comme des répartiteurs de charge
- etc...
1  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 23/05/2023 à 14:50
M est le paramètre template et ceci est un CRTP.
1  0 
Avatar de Pythalex
Membre à l'essai https://www.developpez.com
Le 19/01/2019 à 14:58
Bonjour,

Je suis complètement largué dans le TD01, comment est-on supposé lancer un serveur ? (On a une fonction de connexion, mais où est celle de mise en écoute ?)

Edit : Je viens de regarder les fichiers sources de la correction et ...
J'ai l'impression d'avoir raté un chapitre, l'exercice commence par "Lancez ou compilez le TD 01. Un serveur se lancera sur le port de votre choix et créez un client capable de se connecter à celui-ci.". Je n'ai pas trouvé de lien vers un code source de base pour ce TD, juste le code source de la solution qui comprend aussi un exemple de client. Qu'ai-je manqué ?
0  0 
Avatar de Cefer
Candidat au Club https://www.developpez.com
Le 23/02/2020 à 20:02
Ah merci, j'étais justement en train de le faire, et j'avais cette erreur.
0  0