Page 1 sur 1

SendNetworkData() fichier de 10Ko donnée corrompu

Publié : mer. 21/juil./2010 22:13
par sylvain41
Je me suis fais un serveur web xml, le formatage se fait avec xslt côté client.
Je rencontre un probléme lors d'envoi d'un fichier gif de 18600 Octets ou d'autre type.

J'envoi les fichiers demander par le client avec SendNetWorkData(), mais des que le fichier dépasse environ 10Ko
celui-ci n'est pas envoyé au complet. le retour de la commande SendNetWorkData() m'indique une taille inférieur au fichier d'origine d'ou le bloquage du "browser".

Ce phènoméne ne se produit que sous linux et non windows.
Le serveur sous linux -> browser sous windows = donnée corrompu
Le serveur sous windows -> browser sous linux pas d'erreur.

Pour vérifier si cela ne venais pas de mon programme ; j'ai utiliser l'exemple de purebasic webserver atomic.
J'ai rajouter dans le fichier "index.html" une balise "img" et inclu le fichier image dans le répertoire "www".
Malgrés l'envoie d'une fichier html et d'une image au client le résultat fût identique.Linux corrompu et windows OK.

J'ai posté dans le forum anglais dans bug linux.

On m'a repondu qu'il fallait traiter les erreurs d'envoi.
Je nage un peu là. :(

Je pensais que la commande "SendNetWorkData()" gérer l'envoi que je n'avais pas à m'en occupé.

Deplus pourquoi windows cela fonction et pas sous linux.

Mon code est prévu pour fonctionner sous linux - windows et mac; pas de code spécifique par machine.

Est-ce-que "SendNetWorkData()" est bien approprié pour communiqué avec un "browser" :?:

Merci . :idea:

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : mer. 21/juil./2010 22:22
par G-Rom
Salut & bienvenu, le problème viens de ta routine d'envois ou de réception. Chez moi le réseau fonctionne sans problème.
Quel protocole utilise tu ?

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : jeu. 22/juil./2010 9:12
par sylvain41
Salut,

J'utilise le protocole http sur le port 8001.
Je me suis basé sur l'exemple Atomic server.

Le fait que cela ne fonctionne pas avec cette exemple m'intrigue!

as tu un exemple simple qui fonctionne chez toi?

Peut êtres que le souci viens de mon linux Ubuntu serveur 9.04.

J'ai vérifier; j'ai bien le compilateur 4.50 linux.

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : jeu. 22/juil./2010 9:18
par G-Rom
Salut , quand je parle de protocole , c'est UDP ou TCP.
j'ai pas d'exemple direct sous la main , le mieux c'est que tu poste ton code afin de pouvoir t'aider.

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : jeu. 22/juil./2010 12:18
par sylvain41
Salut,

Protocole TCP bien sûr.

Mon code est trop lourd, c'est pour cela que j'ai utilisé l'exemple Atomic server pour reproduire le phénomène.

Test le sous linux. Lit mon premier post.

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : jeu. 22/juil./2010 13:08
par gnozal
Je n'ai pas Linux.

D'une manière générale, si SendNetworkData() échoue (valeur retournée = -1 ou inférieure au nombre d'octets envoyés) :
-1 : probablement un problème réseau : essaie de renvoyer les données et affiche un message d'erreur si le problème persiste.
n < longueur envoyée : seule une partie des données est arrivée (tampon d'arrivée plein ?). Essaie d'envoyer des paquets plus petits et/ou envoie le complément des données (ce qui reste à envoyer en soustrayant les données bien arrivées).

En fait, SendNetworkData() devrait fonctionner dans une boucle qui gère les erreurs (comme d'ailleurs ReceiveNetworkData())

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : jeu. 22/juil./2010 22:01
par sylvain41
Bonsoir,

Je viens de modifier mon programme pour envoyer des paquets de 5000 Octets.
J'ai vérifier sous windows les données sont bien transmises , le browser affiche les données correctement.

Je lance le serveur sous linux :twisted: idem ; Je me rends compte que les deux premiers paquet de 5000 Octets sont transmis normalement. C'est le troisiéme paquet qui plante à 2300 Octets au lieu des 5000 la suite des paquets retour -1.

J'ai vérifier sur des fichiers javascript et css de grosse taille; idem plantage sur le troisiéme paquet et toujours à 2300 Octets.

Si je me connectes en local avec un browser c'est vers les 140Ko que le probléme survient

Bon cela me dépasse 8O !!!!

Réinstaller Purebasic :idea:
Je vais monter une machine virtuelle "ubuntu server" pour vérifier si cela ne viens pas de mon serveur :idea:

Si vous avez d'autres :idea: je suis preneurs :D

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : jeu. 22/juil./2010 23:51
par G-Rom
Ton pare-feu Linux est peut être trop restrictif ?

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : ven. 23/juil./2010 12:15
par sylvain41
Je n'ai pas de restriction en local.

De plus j'ai plusieurs serveurs qui tourne web,multimédia,samba,mail.

Je vais vérifier la version que j'ai installé en 32 ou 64 bits d'ubuntu.
En tous cas j'ai installé une version 32 bits de purebasic.
Peut êtres un problème à ce niveau :?:

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : ven. 23/juil./2010 12:32
par G-Rom
Aucune idée...
As tu essayé de créer un code minimal (hormis l'exemple) pour testé la communication avant de te lancer dans un truc plus gros ?

Re: SendNetworkData() fichier de 10Ko donnée corrompu

Publié : ven. 23/juil./2010 12:44
par venom
pour purebasic x64 ou x86 perso j'ai un système en x64, mais j'ai installer les 2 versions car quand tu compile un exe en x64, ce dernier ne peut s'exécuter sous x86.

Donc je programme tout sous x64 et je compile pour les 2 maintenant et cela fonctionne tres bien. :wink:
Mais bon fait le test quand même ont ne sais jamais.







@++