SendNetworkData() fichier de 10Ko donnée corrompu

Codes specifiques à Linux
sylvain41
Messages : 5
Inscription : dim. 11/juil./2010 17:33
Localisation : Grenoble

SendNetworkData() fichier de 10Ko donnée corrompu

Message 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:
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

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

Message 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 ?
sylvain41
Messages : 5
Inscription : dim. 11/juil./2010 17:33
Localisation : Grenoble

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

Message 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.
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

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

Message 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.
sylvain41
Messages : 5
Inscription : dim. 11/juil./2010 17:33
Localisation : Grenoble

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

Message 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.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

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

Message 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())
sylvain41
Messages : 5
Inscription : dim. 11/juil./2010 17:33
Localisation : Grenoble

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

Message 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
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

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

Message par G-Rom »

Ton pare-feu Linux est peut être trop restrictif ?
sylvain41
Messages : 5
Inscription : dim. 11/juil./2010 17:33
Localisation : Grenoble

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

Message 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 :?:
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

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

Message 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 ?
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message 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.







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre