|
Bas de page | |
---|---|
Auteur | Sujet : Problème de sockets TCP |
Publicité | Posté le 20-01-2006 à 09:42:14 |
francky06l | Le fait d'avoir les messages dans les memes paquets c'est normal, ca fait partie du Nagle Algo (qui attend environ 200 ms avant d'envoyer ou cas ou d'autre donnees sont mise en queue pour le meme destinataire, cela evite les "petits paquets" et les collisions reseaux). Sur la meme machine en loopback, rien ne sort sur le reseau alors ca marche.
|
Dumbledore | J'ai ajouté ça dans mon code pour le désactiver sur la socket du serveur et sur chaque socket des clients :
Message édité par Dumbledore le 20-01-2006 à 11:11:21 |
francky06l | Une autre solution, serait de d'envoyer la taille du message avant le message. Le client pourrait ainsi "couper" au bon endroit. Tu envois un int avec la length, dans le client tu lis d'abord sizeof(int), ensuite le nombre de caracteres. Attention si tu "mixes" les plateform a l'Endian case. |
Dumbledore | J'y avais pensé, mais techniquement, je ne peux pas mettre ta solution en oeuvre pour des raisons de compatibilité avec les clients....
Message édité par Dumbledore le 20-01-2006 à 11:27:43 |
blackgoddess vive le troll ! | bin s'ils font tous la meme taille tu les découpent toi meme alors
--------------- -( BlackGoddess )- |
Dumbledore | Ce que je veux dire, c'est que là, j'envoie d'affilé plusieurs messages de même taille lors de l'initialisation de la connexion avec les clients, mais après, en fonctionnement normal, les messages sont de longueur variable.
Message édité par Dumbledore le 20-01-2006 à 11:50:20 |
francky06l | La taille des paquets n'est pas toujours la meme (MTU / MSS). De plus dans le cas de WAN etc il peut y avoir des "points" (routeurs ...) qui "redecoupent..donc pas viable.
|
Dumbledore | Ouép, mais je peux pas modifier le code des clients... |
Dumbledore | Désolé de faire un UP, mais personne n'a d'idée pour mon problème ? Je ne peux vraiment pas toucher au code des clients pour des raisons d'interropérabilité...
|
Publicité | Posté le 26-01-2006 à 19:09:00 |
moi23372 | A vrai dire, si tu ne peux modifier les clients, ça va être dure. Les clients sont donc mal programmé depuis le début. |
francky06l | Un int avant est une idee, pour la portabilite rien n'empeche d'envoyer sous format string de 4 bytes ("0124" ) et de faire un receive puis un atoi de cette chaine..
|
francky06l | Desole, en regardant le code que tu as poste avant .. Apparemment tu recois un maximum de BUFFERSIZE dans le client. La solution c'est que le server envois toujours BUFFERSIZE en longeur (tu completes la fin avec des '\0').. Je ne vois que ca sans modifier le client.
|
Dumbledore | j'vais voir ce que ça donne en bourrant avec des \0 |
Sujets relatifs | |
---|---|
Probleme avec ma version JAVA ? j'arrive pas a faire tourner un prog ? | probleme avec include file |
problème avec CreateGraphics() | [résolu][CSS] Probléme avec... FF ! |
[C] Problème de sockets | Probleme de switch |
Problème d'accès temps réel | problème datagrid et index des columns |
SQL : Gros problème de lenteur sur un UPDATE | |
Plus de sujets relatifs à : Problème de sockets TCP |