Accueil > Forum > > > > Winsock découpe tout en paquets et ne s'occupe pas de les recoller
Winsock découpe tout en paquets et ne s'occupe pas de les recoller
lundi 5 avril 2004 à 13:15:02 |
Winsock découpe tout en paquets et ne s'occupe pas de les recoller

kelly
|
Mon problème est dans le titre : Winsock découpe tout en paquets et ne s'occupe pas de les recoller. Est-ce que c'est vrai ou c'est moi qui fait un blocage ? Parce que ce foutu controle ne simplifie pas la vie s'il faut envoyer des paquets de 6 octets pour etre sur que ca arrive en un morceau ... Si qqun peut m'éclairer sur le sujet, je suis un peu perdu. Je sais que sous Unix et en C, quoi qu'on envoie sur le réseau (en un seul appel à l'équivalent de Winsock1.SendData), même si les données correspondantes prennent 10Mo, l'autre machine connectée ne recevra l'énénement de réception (équivalent de DataArrival) que quand les 10Mo seront arrivés... Bref, qqun a les idées suffisamment claires pour me dire où je m'égare, et le cas échéant, comment faire ? Merci d'avance KB
|
|
lundi 5 avril 2004 à 15:53:08 |
Re : Winsock découpe tout en paquets et ne s'occupe pas de les recoller

Pat35
|
Salut,
He oui, la vie est dure, mais non, WinSock de reconstitue pas lui même les trames que tu envoie.
C'est à toi de gérer les flux.
Pour ça, je te conseil de gérer une mémoire tampon (un buffer de réception) dans la quelle tu mettra les données reçus par la socket et d'ajouter un caractère (ou une chaine) de fin de trame pour savoir quand la réception des données est complète.
A chaque réception, tu test si le caratcère de fin fait parti des données reçues.
Je te conseil des caractères non affichable comme NULL ou GS pour notifier ta fin de trame.
j'espère que c'était claire.
Ciao
|
|
dimanche 9 mai 2004 à 15:08:07 |
Re : Winsock découpe tout en paquets et ne s'occupe pas de les recoller

kelly
|
Merci pat35 pour ta réponse qui me fixe les idées sur les capacités du controle winsock de vb.
Mais mon incompréhension demeure sur un point : Si par ex, mon programme client veut envoyer deux requetes indépendantes au serveur (deux appels à SENDDATA), chacune tenant en un paquet de quelques 100 octets, et qu'il les envoie presque au meme instant, eh bien le ctrl winsock ne trouve rien de plus intelligent à faire que de les envoyer en un bloc, le serveur ne sachant que faire de ce paquet, qu'on y ait incorporé des caracteres de controles de partout , ou non...
Je serais-je trompé dans mon observation du comportement du controle winsock?
|
|
lundi 10 mai 2004 à 11:57:50 |
Re : Winsock découpe tout en paquets et ne s'occupe pas de les recoller

Pat35
|
Salut,
Ton problème ne viens pas tant du fait que ton client envoie les trames simultanément (ou presque) que du temps que met ton serveur à lire et traiter les messages (obligatoirement plus long que le temps d'émission).
En fait, que les envois aient étés simultanés ou non, windows concatène tous les messages non lues par ton serveur à chaque lecture sur la sockets. Donc si ton serveur rame, tu aura le même problème.
Pour éviter de rendre les message illisibles, il faut : 1 - Ajouter un délimiteur à la fin de chaque messages envoyés.
2 - Mettre les messages reçus dans une variable statique et ne traiter les message que si la mémoire tampon contient le délimiteur de fin. Si le tampon contient le délimiteur, il faut extraire la chaîne jusqu'au délimiteur, traiter la chaîne puis supprimer la chaîne traitée du tampon et recommencer tant que le délimiteur est trouvé.
Tu peux trouver un exemple dans le source que j'ai posé sur le site, ça devrai t'éclairer sur ce mode de fonctionnement.
|
|
lundi 10 mai 2004 à 19:39:07 |
Re : Winsock découpe tout en paquets et ne s'occupe pas de les recoller

kelly
|
Je te remercie , je vais regarder ta source des que possible (chui en plein concours lol).
Donc d'après ce que tu dis , je dois me résoudre à envoyer des paquets sans aucune garantie d'arrivée en blocs déterminés...
Ton système est bien le bon , mais il reste vulnérable à la possibilité de présence dans les données transférées, du délimiteur en question :) meme si cela n'arrivera qu'une fois toutes les années bissextiles, ca peut arriver quand on envoie des données aléatoires comme une image ou du son ou que sais-je...
Bah, merci encore !
|
|
mardi 11 mai 2004 à 08:54:07 |
Re : Winsock découpe tout en paquets et ne s'occupe pas de les recoller

Pat35
|
Salut,
Un dernier message pour te dire que tu peux en théorie trouver un ou des caractères qui ne se retrouvent pas dans les données que tu transfert. Le caractère NULL par exemple se retrouve très rarement dans uns donnée.
De plus, tu peux gérer des sécurités. Comme par exemple ajouter un autre caractère avant celui que tu as choisi comme délimiteur si il est transmit comme donnée.
En fait, c'est pas si compliqué de créer un protocole propre et efficace, ça demande juste un peux de traitement de contrôle à la réception des données.
Bon, ben amuse toi bien à ton concours. Ciao.
|
|
Cette discussion est classée dans : winsock, découpe, paquets, occupe, recoller
Répondre à ce message
Sujets en rapport avec ce message
Aidez moi SVP - WINSOCK et GETDATA [ par liquide ]
liquideBonjour, j'ai un pb avec le getdata du contole Winsock. Lorsque je recois les données par paquet par le Getdata, je n'est aucun pb a les traite
envoi de paquets (avec winsock) [ par Chipsounet ]
Voilà, j'aimerai bien comprendre et savoir reproduire l'envoi de paquets brut comme le fait ma machin par winsock.Pour la compréhension des grands pri
Limite de la taille des paquets dans winsock? [ par BozzoDodo ]
Bonjour, J'aimerai savoir quelle est la taille maximale des paquets que l'on peut envoyer (par winsock.senddata). Si le paquet est plus gros que cette
Winsock et IP [ par pastis51forever ]
Je suis en train de faire un p'tit prog qui utilise winsock pour communiquer avec un autre pc, par l'intermédiaire d'internet.Pour la connexion, je n'
winsock : Transfert FTP se bloque à la commande 150 aprés le STOR [ par stephane_mlc ]
Une fois sur deux le transfert se bloque. J'ai bien la réponse du serveur : 150 Opening ASCII mode data connection for ... et aprés plus rien... Qu'es
??accusé réception pour mail avec winsock?? [ par Spacemarine ]
salut j'ai vraiment besoin d'aide je debute en programmation et j'essaye d'ajouter une fonctionnalité au programme pour envoyer un mail autonome
Winsock Re moi ! [ par MaxSoldier ]
Bonjours, je voudrai savoir comment faire pour que quelqu'un puisse se connecter à moi derrière mon routeur ( j'utilise ma freebox en NAT ) car malgrè
Ocx Sur Visual Basic 8 [ par VisualBasic3037 ]
bon vous mavez dit comment faire mais la quand jutilise microsoft Winsock 6.0 sur mon visual basic 8 ben sa fait cette erreur<IMG alt="" hspace=0 src=
Problème Winsock [ par akina ]
Bonjour, J'ai une chaine de caractère ("XFR 6 NS 207.46.107.43:1863 0 207.46.104.20:1863") et j'en extraint la première ip souligné et le port avec l
Winsock lent [ par ananda10 ]
Voila quand je télécharge un fichier a partir d'un url avec ce composant le téléchargement est 2 fois plus lent que d'habitude. Yaurai t'il une manier
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Patrick Guimonet et Benoit Hamet Cette session traitera des différents points exigés durant les taches d'administration : Planification (architecture, hébergement, authentification, .) Opération e...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010[TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010 par pierre
Stephane Cordonnier de MCNext nous présente les fonctionnalités Web Content Management (WCM) sous SharePoint 2010. Qu'est-ce que le WCM ECM, GED, RM, WCM c'est quoi Plateforme SharePoint Versions SharePoint 2010 SharePoint Fondation...
Cliquez pour lire la suite de l'article par pierre [DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE par tja
C'est le dernier principe des principes du Design Orienté Objet (The Principles of Object Oriented Design) fondés par Robert C. Martin plus connu sous le pseudonyme d'Uncle Bob.
l'image empruntée de LosTechies.
Je ne traite pas les principes dans...
Cliquez pour lire la suite de l'article par tja TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|