envoyer un fichier autre que les .txt avec les socket

envoyer un fichier autre que les .txt avec les socket - C++ - Programmation

Marsh Posté le 16-02-2004 à 16:41:00    

salut !
ya t il une fonction autre que send qui s'en charge ? où y a t-il quelque chose de spécial à faire ? car mon programme ne marche qu'avec les .txt
pouvez vous m'aidez ?

Reply

Marsh Posté le 16-02-2004 à 16:41:00   

Reply

Marsh Posté le 16-02-2004 à 16:41:52    

moi faut que j'achète un fusible 10A

Reply

Marsh Posté le 16-02-2004 à 16:47:08    

taz a écrit :

moi faut que j'achète un fusible 10A


 
quel rapport ? tu pourrais etre sympa et ne pas polluer mon topic...

Reply

Marsh Posté le 16-02-2004 à 16:47:49    

ben si tu pouvais être plus flou, donner mois de code

Reply

Marsh Posté le 16-02-2004 à 16:56:04    

je parle d'un envoi de fichier sous windows en TCP, et je voulais savoir si il fo faire quelque chose de spécial pour un envoi de fichier autre que les .txt
et je suis désolé mais je ne peux pas mettre le code. :-/

Reply

Marsh Posté le 16-02-2004 à 18:32:39    

Moi non plus je ne comprends pas bien ...
Send s'en fout de ce que tu envois à priori !

Reply

Marsh Posté le 16-02-2004 à 18:55:14    

Send n'envoie-t-il pas byte par byte?
 
Crici: +1

Reply

Marsh Posté le 16-02-2004 à 20:58:14    

man send
 


NOM
       send, sendto, sendmsg - Envoyer un message sur une socket.
 
SYNOPSIS
       #include <sys/types.h>
       #include <sys/socket.h>
 
       int send(int s, const void *msg, size_t len, int flags);
 
       int  sendto(int s, const void *msg, size_t len, int flags, const struct
       sockaddr *to, socklen_t tolen);
 
       int sendmsg(int s, const struct msghdr *msg, int flags);
 
DESCRIPTION
       Send, sendto, et sendmsg permettent de transmettre un message à  desti-
       nation d?une autre socket.  Send ne peut être utilisé qu?avec les sock-
       ets connectée alors que sendto et sendmsg peuvent être utilisés tout le
       temps.
 
       L?adresse  de  la  cible  est donnée par to avec la longueur tolen.  la
       longueur du message est indiquée dans len.  Si le message est trop long
       pour  être  transmis  intégralement  au protocole sous-jacent, l?erreur
       EMSGSIZE sera déclenchée et rien ne sera émis.
 
       Aucune indication d?échec  de  distribution  n?est  fournie  par  send.
       Seules  les erreurs locales sont détectées, et indiquées par une valeur
       de retour -1.
 
       Si la socket ne dispose pas de la place  suffisante  pour  le  message,
       alors send va bloquer, à moins que la socket ait été configurée en mode
       d?entrées/sorties non-bloquantes auquel cas elle renverra  EAGAIN.   On
       peut utiliser l?appel système select(2) pour vérifier s?il est possible
       d?émettre des données.
 
       Le paramètre flags peut contenir une ou plusieurs des options suivantes
.........


Message édité par black_lord le 16-02-2004 à 20:58:41
Reply

Marsh Posté le 17-02-2004 à 00:00:37    

Ca na aucun raport, mais taz ne fait que poluer les topics avec des reflexion hors sujet et des insultes!http://forum.hardware.fr/icones/icon8.gif

Reply

Marsh Posté le 17-02-2004 à 00:05:18    

je ne pollue pas. tout sujet avec un message qui en dit rien, et un « je ne peux pas mettre le code » mérite d'être fermé d'office.
 
 
black_lord : bien essayé «  sous windows en TCP »

Reply

Marsh Posté le 17-02-2004 à 00:05:18   

Reply

Marsh Posté le 17-02-2004 à 07:28:28    

[:ddr555]

Reply

Marsh Posté le 17-02-2004 à 10:38:01    

bin si ton fichier tu l'ouvrais en binaire au lieu de l'ouvrir en texte, ça marcherai ptet mieux déjà non ? :D

Reply

Marsh Posté le 17-02-2004 à 10:39:54    

Ah, peut etre une fine percée de bjone ?
 
C'est un peu colin maillard ce topic, trouvez le bug les yeux bandßes

Reply

Marsh Posté le 17-02-2004 à 10:43:43    

:lol:
 
en même temps c'était facile...
 
je propose des topic programmation à la "dessinez c'est gagné"....

Reply

Marsh Posté le 17-02-2004 à 11:31:21    

Oui, enfin pour poster des contributions qui ne veulent rien dire et polluent le topic, tu ferais mieux de t'abstenir, ou d'aller dans blabla@prog...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 17-02-2004 à 11:32:33    

Au fait, beusser, je vois toujours pas pourquoi ce topic figure a la section C++...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-02-2004 à 10:57:07    

WuShu94 a écrit :

pour polluer le topic ya du monde par contre pour répondre à la question...
tt lé fichiers s'envoient de la mm facon que ce soit d txt des bmp etc
je pense que tu as dû utiliser un seul send() pour envoyer ton txt et que c a marcher parce qu'il était assez petit mais dans le cas d'un gros fichier, il faut le decouper l'envoi en plusieur petit morceau du style 256 octets par 256 octets
Cherche un peu et si tu trouve pas je te mettrai l'algo


perdu.
on peut utiliser 1 seul send quelque soit la taille.
si son code marche qu'avec les txt, c'est a coup sur une histoire de \0, de fichier binaire, ou un truc similaire...

Reply

Marsh Posté le 04-03-2004 à 18:18:51    

murf ... Konar voulait dire que c'est pas à la couche application à s'occuper du fractionnement en TCP ...


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 05-03-2004 à 00:51:31    

WuShu94 a écrit :

murf...moi g jamais parlé de fractionner le fichier pour se farcir le boulot de la couche reseau mais plutot pour la taille du buffer d'envoi et de reception car si, comme le dit Konar, tu peux envoyer n'importe quel taille avec un send(), si t'envoi ton divx en un seul coup tu va avoir du mal à allouer 700 Mo de memoire non ?  


 
ben ouais ok, mais send() il s'en fout de ta quantité de ram, il envoie le buffer qui lui est passé c'est tout, quelquesoit sa taille.
 
fractionner les send c'est juste pour avoir une idée/controle de ce qui se passe.
 
sur ce je te quote :
 

WuShu94 a écrit :


mais dans le cas d'un gros fichier, il faut le decouper l'envoi en plusieur petit morceau du style 256 octets par 256 octets  


 
pourquoi 256 octets ?
tu vas avoir du mal a allouer plus de mémoire ?

Reply

Marsh Posté le 05-03-2004 à 01:01:00    

WuShu94 a écrit :

murf...moi g jamais parlé de fractionner le fichier pour se farcir le boulot de la couche reseau mais plutot pour la taille du buffer d'envoi et de reception car si, comme le dit Konar, tu peux envoyer n'importe quel taille avec un send(), si t'envoi ton divx en un seul coup tu va avoir du mal à allouer 700 Mo de memoire non ?  


 
à la boeuf, tu mappes le fichier en mémoire, ça doit marcher :D

Reply

Marsh Posté le 05-03-2004 à 01:01:15    

c'est un jeu à essayer tiens...

Reply

Marsh Posté le 05-03-2004 à 08:27:26    

Oui, le mappage de fichier est très certainement la meilleure solution, y a rien de "boeuf" là dedans ...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed