problème taille de buffer /socket - C++ - Programmation
Marsh Posté le 26-02-2003 à 21:44:02
Euh il aime peut-etre pas les variables globales trop grosses ?
Decris exactement ce qui se passe... Utilise un debugger...
Marsh Posté le 26-02-2003 à 22:05:44
Ben concrètement je teste le prog avec un serveur web sur la machine A.B.C.D , et si la page (ou image) est supérieur a 10ko elle s'affiche pas ou mal dans le navigateur, alors que je crée un buffer de 100ko pour stocker les données transferées.
Lorsque j'affiche la taille du buffer en cours elle vaut tj 10220 maximum (ou moins lorsque chaque objet de la page est < 10ko)
Marsh Posté le 27-02-2003 à 15:38:23
un buffer de 100000 octets ...
vous etes les meilleurs!
Petite question: pourquoi un buffer aussi gros? 2048 est une taille raisonnable ...
Marsh Posté le 27-02-2003 à 15:57:37
ben c présicément mon prob...
d'abord je n arrive pas remplir les 100000 bytes du buffer,
Et ensuite c justement ske je voulais savoir comment gerer des transfert de gros fichiers en ptit paquet avec un ptit buffer.
Marsh Posté le 27-02-2003 à 16:25:13
les paquets TCP ou UDP a une taille maximal qui n'est pas très grande ... tout est découpé en morceaux et reassemblé par le destinataire donc un gros buffer n'a pas d'intérêt ...
Comment lire un gros fichier? Comme les petits:
Code :
|
Cet extrait de code permet de copier un fichier de taille quelconque ... il suffit que tu remplace fichier_iso par ta socket!
EDIT: pas terrible, la rendue ...
Marsh Posté le 27-02-2003 à 16:50:42
merci
J'en ai pour l'aprem avec ca , mais tant mieux y fait bo , (et moi j aime la pluie )
Je voudrait juste etre sur d'avoir compris la méthode,
Donc peripherique c le fichier qui contient ce que je veux transferer?
Et lorsque tu fait write fichier_iso je doit faire un send ?
ca bien ca?
Et est que la méthode peut s appliquer pour recevoir un fichier (en inversant les fonctions)?
Encore merci pour ton aide
Marsh Posté le 27-02-2003 à 17:06:26
bingo! cela doit être ça! (cela fait au moins deux ans que j'ai pas touché aux sockets en C)
Marsh Posté le 27-02-2003 à 17:17:28
oki nikel ,encore merci
une dernière question ( je pousse la )
Vous me conseillez quoi comme sentinelle mieux 15 '*'.
Le char 4 (EOT) sert a ca ?
Marsh Posté le 27-02-2003 à 19:40:11
heu voila je vien de taper ca
Code :
|
La y as plus qu'un socket , c juste pour tester.
La ca marche , en fait je peut transferer par exemple une image (qui pour l'instant est sur le disque local),
Mais le prob dans ie elle s'affiche très bien mais sous d'autre nav comme mozilla ou konqueror ca foire.
Qd ca sera le contenu renvoyer par le apache de l'autre machine (qd j aurais mis l'autre socket) ca marchera la?
Marsh Posté le 27-02-2003 à 23:57:13
bon voila g capter comment ca marchait ,c t pas nécessaire d'utiliser un fichier en fait , mais c qd meme ca qui ma mis sur la voie
Et les deux problèmes ci dessus se sont bien résolu d eux meme comme j esperait
c t tout con en fait...
Code :
|
Mais y reste encore un prob c que c très (trop) lent...
Entre chaque requete transmise puis retransmise y as des long moment ou y fout rien ...Et je vois pas ou est le prob
Si par exemple j'arriverait a faire le meme algo mais en me connectant qu'une seule fois a l autre machine (192.168.0.81)
j'y gagnerait bcp?
Si qqn peut encore m'aider ca serait super
Marsh Posté le 28-02-2003 à 09:31:54
Amigo, soit tu fais du C (memcpy) soit du C++(cout) ... Il ne faut pas melanger les choses car cela est une très mauvaise pratique (pas de troll, svp)
Pour tes problèmes, plutard peut-être car là
1) je ne suis pas reveillé (une mauvaise nuit);
2) j'ai très mal à la gorge, à la tête (une mauvaise nuit) et pour courronner le tout un nez qui n'arrete pas de couler ...
Marsh Posté le 28-02-2003 à 21:03:31
je suis d'accord avec toi en ce qui concerne les normes , mais c le genre de detail que je regle qd ca marche.
Or la ...
Sinon jte souhaite un bon retablissement
Les autres, si vous avez des remarques qui pourrait m'aider ne vous genez pas
Marsh Posté le 02-03-2003 à 18:36:18
bon je crois que j'ai trouver ,le prob venait quand y recevait le dernier paquet de taille zero,
Mais g encore des probs
Je voulait utiliser le flag MSG_EOR
Mais visual me sort qu'il le connait pas.
edit: le prob avec gcc est resolu mais pas l'autre...
redit: nan en fait c MSG_WAITALL le bon flag mais c pareil visual me sort tj qu'il le connait pas...
Marsh Posté le 26-02-2003 à 19:33:34
bonjour,
Je voudrait faire un programme qui fait un genre de tunnel, pour rediriger les connexions entrantes sur le port XX vers le port port YY de la machine A.B.C.D
g taper le code suivant
a priori ca fonctionne mais lorsque que j'essaye de transferer un buffer suprérieur a 10220 bytes ca foire
Je vois pas trop comment m'y prendre ...si vous pouvez me guider sur le principe pour gerer les transferts en paquets...
Merci d'avance