Accueil > Forum > > > > Pile des sockets
Pile des sockets
mercredi 30 juillet 2003 à 22:15:08 |
Pile des sockets

darsh99
|
Bonjour, je suis toujours sur mon client serveur et j'ai un petit problème de paquets : J'envoie des paquets de taille variable mais avec une taille maximum connue de tous les clients et du serveur (actuellement 512 octets). Par exemple j'envoie un paquet de 20 octets puis tout de suite après un paquet de 30, côté réception je lis les paquets avec un buffer de 512 octets. J'ai 2 problèmes : d'une part il me remplit le buffer avec les 2 paquets (le 20 + le 30) d'autre part pendant qu'il est occupé à traiter le recv, l'envoi des autres paquets se termine (j'en envoie en fait une 15aine) pour dépasser finalement les fameux 512 octets, lorsqu'il a terminé de traiter le 1er pack de 512 octets, il retourne au WSAWaitEvent() et bien qu'il reste des paquets à lire, il attend... (j'ai mis l'évènement à auto-reset) J'avais lu ici un conseil qui disait d'envoyer un paquet puis d'attendre un accusé de réception, mais ça risque de ralentir énormément les transferts :/ (en plus faut mettre un timeout :| ) et je ne suis pas sûr que ça règle le 2nd problème. Comment dois-je m'y prendre pour contourner ça ? Y'a-t-il moyen de ne lire que vrai paquet par vrai paquet ?
|
|
jeudi 31 juillet 2003 à 09:41:07 |
Infos supplémentaires

darsh99
|
Je sais que je n'ai posté qu'hier soir, mais je suis pressé :-), j'ajoute donc quelques infos :
Mes sockets sont en SOCK_STREAM et je travaille sous VC++.
Il doit bien y avoir un moyen de récupérer paquet par paquet et pas tout ce qui loge dans le buffer :/ snif snif
|
|
jeudi 31 juillet 2003 à 13:54:10 |
Re : Infos supplémentaires

aardman
|
Salut, J'ai pas vraiment d'idées pour resoudre ton probleme, mais pourquoi tu tiens tant a recevoir paquet par paquet ?
------------------------------- Réponse au message : -------------------------------
> Je sais que je n'ai posté qu'hier soir, mais je suis pressé :-), j'ajoute donc quelques infos : > > Mes sockets sont en SOCK_STREAM et je travaille sous VC++. > > Il doit bien y avoir un moyen de récupérer paquet par paquet et pas tout ce qui loge dans le buffer :/ snif snif
|
|
jeudi 31 juillet 2003 à 14:06:33 |
Re : Infos supplémentaires

darsh99
|
Ce n'est pas tant "recevoir" mais "récupérer" paquet par paquet.
C'est parce que heuuu :) Sérieusement c'est parce que par exemple mon client demande un groupe de fichiers au serveur, déjà chaque fichier est précédé d'un paquet d'informations sur le fichier (par exemple son emplacement sur le serveur), ce paquet est de taille inférieure à mon buffer de lecture, quand il lit le paquet d'information il embarque avec le début du premier paquet du fichier, c'est quand même très embêtant.
------------------------------- Réponse au message : -------------------------------
> Salut, > J'ai pas vraiment d'idées pour resoudre ton probleme, mais pourquoi tu tiens tant a recevoir paquet par paquet ?
|
|
jeudi 31 juillet 2003 à 14:34:22 |
Re : Infos supplémentaires

aardman
|
Salut, Je pense que le systeme avec accusé de reception dont tu parles plus haut est le meilleur. Tu envoie un paquet d'info, et tu attend le feu vert du serveur pour commencer a envoyer le fichier lui meme. Tu pense pas que ca fonctionnerai?
------------------------------- Réponse au message : -------------------------------
> Ce n'est pas tant "recevoir" mais "récupérer" paquet par paquet. > > C'est parce que heuuu :) > Sérieusement c'est parce que par exemple mon client demande un groupe de fichiers au serveur, déjà chaque fichier est précédé d'un paquet d'informations sur le fichier (par exemple son emplacement sur le serveur), ce paquet est de taille inférieure à mon buffer de lecture, quand il lit le paquet d'information il embarque avec le début du premier paquet du fichier, c'est quand même très embêtant. > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut, > > J'ai pas vraiment d'idées pour resoudre ton probleme, mais pourquoi tu tiens tant a recevoir paquet par paquet ?
|
|
jeudi 31 juillet 2003 à 14:50:03 |
Re : Infos supplémentaires

darsh99
|
> Salut, Salutations :)
> Je pense que le systeme avec accusé de reception dont tu parles plus haut est le meilleur. > Tu envoie un paquet d'info, et tu attend le feu vert du serveur pour commencer a envoyer le fichier lui meme. > Tu pense pas que ca fonctionnerai ?
Je pense aussi, mais j'ai une contrainte de timing, le système d'accusé de réception est bon mais il est lourd, je ne sais pas trop quelle est l'incidence sur la vitesse de transfert, mais mon serveur va envoyer périodiquement des données à au moins un client et le fait de devoir attendre le feu vert du client pour envoyer la suite est beaucoup plus lourd pour lui que de tout envoyer "d'un coup".
Je vais tester avec l'accusé de réception (mais mis seulement aux endroits où c'est nécessaire et non pas à tous les paquets) et voir si c'est acceptable ou même très bien (on ne sait jamais :)).
Merci.
|
|
jeudi 31 juillet 2003 à 14:56:22 |
Re : Infos supplémentaires

aardman
|
Salut, Pour l'accusé de reception, pas besoin de faire un truc enorme. Un accusé de reception d'un octet devrait suffire. (genre un # ou un @).
Niveau timing, si tes fichiers font plus de 512octets, on est plus a 1 octet pret :)
------------------------------- Réponse au message : -------------------------------
> > Salut, > Salutations :) > > > Je pense que le systeme avec accusé de reception dont tu parles plus haut est le meilleur. > > Tu envoie un paquet d'info, et tu attend le feu vert du serveur pour commencer a envoyer le fichier lui meme. > > Tu pense pas que ca fonctionnerai ? > > Je pense aussi, mais j'ai une contrainte de timing, le système d'accusé de réception est bon mais il est lourd, je ne sais pas trop quelle est l'incidence sur la vitesse de transfert, mais mon serveur va envoyer périodiquement des données à au moins un client et le fait de devoir attendre le feu vert du client pour envoyer la suite est beaucoup plus lourd pour lui que de tout envoyer "d'un coup". > > Je vais tester avec l'accusé de réception (mais mis seulement aux endroits où c'est nécessaire et non pas à tous les paquets) et voir si c'est acceptable ou même très bien (on ne sait jamais :)). > > Merci.
|
|
jeudi 31 juillet 2003 à 15:18:24 |
Re : Infos supplémentaires

darsh99
|
> Pour l'accusé de reception, pas besoin de faire un truc enorme. Un accusé de reception d'un octet devrait suffire. (genre un # ou un @). Oui oui c'était mon intention, j'ai déjà codé les requêtes/réponses avec une liste de code sur le premier octet du paquet, suffit d'en rajouter un :). > Niveau timing, si tes fichiers font plus de 512octets, on est plus a 1 octet pret :) Ce n'est pas le transfert de l'octet qui m'inquiète en fait :), c'est surtout qu'il faut attendre que le paquet de 512o soit arrivé + que la réponse revienne. Pour chaque fichier ça me fait 2 accusés de réception c'est vrai que ce n'est pas énorme (surtout que pour l'instant mon groupe de fichier le plus élevé fait...2 fichier :)). En plus je suppose que sans accusé de réception on peut arriver à bourrer la pile du socket et déclencher un beau lag serveur  . A propos, je peux monter la taille de paquet à combien en local/x-dsl/rtc ? Je suppose qu'en rtc il ne faut pas dépasser 1ko et pour les deux autres 2 ou 3 ko (sous réserve que le réseau local ne soit pas trop grand (genre avec des vpn de la Hongrie jusqu'à la France au milieu hum)).
|
|
Cette discussion est classée dans : envoie, octets, pile, paquet, paquets
Répondre à ce message
Sujets en rapport avec ce message
envoie d'une structure dans une pile [ par Hellboy67 ]
je dispose d'une pile que j'ai appelé pune structure que j'ai appelé cases (ci-dessous)struct donnee{ position pos; queue valeur;};la ou sa coince c q
Envoie de données [ par ZIHO ]
Bonjour, Je developpe une application en C pour communiquer entre deux modules de tansmission sans fils les Zigbee. je dois envoyer d'un module à un
Envoie d'octets [ par ZIHO ]
Bonjour, je dois rendre un programme ecrit en C le Lundi. En Gros, je reçois une commande de 8 octets et donc mon travaille est : 1- Renvoyer chaqu
Récupération et réencodage de packet d'un serveur [ par mic1331 ]
Tout d'abord bonjour à la communauté ! Donc j'explique ma venu ici. En gros, je cherche à récupéré les paquet envoyer par mon serveur de jeu qui sont
Augmenter la taille d'une pile [ par ssana83 ]
Bonsoir, comment je peux augmenter la taille d'une pile en visual c++ pour éviter le problème de débordement de pile. Merci.
envoie et reception des données sur rs232 vers pic [ par marmouraa ]
Slt tout le monde, je suis entrain de faire un projet de fin d'études dans lequel j'ai besoin d'une communication rs232. je veux envoyer une code( par
distribuer des cartes [ par korin221 ]
Bonjour! Je réaliser un jeux de UNO en C. J'ai réaliser un pile dynamique ( utiliser pour les cartes ) Je voudrais savoir si cette méthode est utile ?
pile dynamique [ par korin221 ]
Bonjour! Voila j'ai un problème. Je voudrais mélanger ma pile dynamique de façon aléatoire. Peut on directement mélanger la pile ou alors passer la pi
C++?/ Problème pour recevoir des octets dans un tableau [ par LiaGalanodel ]
Bonjour a tous. Je suis une grande débutante en c++ et je me heurte a un problème. Voila, je dois faire un programme de socket. J'utilise pour cela
Detection de formes [ par blastrame ]
Bonjour, J'aurais besoin de votre aide pour détecter la forme rectangle, triangle et rond car mon code fonctionne actuellement avec un nombre de pixe
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|