Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2818 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Transfert d'informations ip to ip , c chaud ?

n°408370
piloud
Posté le 26-05-2003 à 20:05:02  profilanswer
 

Reprise du message précédent :
je l'ouvre en fmCreate mais d'apres laide , c aussi en mode ecriture :)  
 
ok mci , je v voir ce que je peux faire maintenant !

mood
Publicité
Posté le 26-05-2003 à 20:05:02  profilanswer
 

n°408389
piloud
Posté le 26-05-2003 à 20:32:09  profilanswer
 

//reception fichier
  freception:=Tfilestream.Create(extractfilepath (application.ExeName)+NomFichierReception,fmOpenRead and fmShareDenyNone);
   
 
  f:=socket.ReceiveLength;
  SetLength(ChaineReception,f);
  socket.ReceiveBuf(ChaineReception,f);

  socket.ReceiveBuf(ChaineReception,socket.ReceiveLength);
  freception.Write(ChaineReception[1],sizeof(ChaineReception));
   
 
 
//envoi
 routefichier:=Filename;
     Fenvoi:=Tfilestream.Create(routefichier,fmCreate and fmShareDenyNone);
 
 SetLength(Chaine, Fenvoi.Size);
 Fenvoi.Read(Chaine[1], Fenvoi.Size);
 ServerSocket1.Socket.Connections[0].SendBuf(Chaine,r);
 
 
 
jai rajoute ca et jai remplace le fmcreate par fmopenread mais le fichier recu contient un petit carré a la place du texte voulu :(

n°408392
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-05-2003 à 20:35:08  profilanswer
 

 socket.ReceiveBuf(ChaineReception,f);
  socket.ReceiveBuf(ChaineReception,socket.ReceiveLength);
 
pq 2x ? :heink:
puis t'as oublié le [1] de ChaineReception
 
idem pour le SendBuf


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°408393
piloud
Posté le 26-05-2003 à 20:40:40  profilanswer
 

bha le x2 cetait juste dans le forum :)
le [1] je pensais que ca allait juste envoyer le premier caractere de la chaine !
 
voila merci , je teste

n°409670
piloud
Posté le 27-05-2003 à 18:44:32  profilanswer
 

//reception fichier
  freception:=Tfilestream.Create(extractfilepath (application.ExeName)+NomFichierReception,fmCreate and fmShareDenyNone);
   
 
  f:=socket.ReceiveLength;
  SetLength(ChaineReception,f);
  socket.ReceiveBuf(ChaineReception[1],f);  
  freception.Write(ChaineReception[1],sizeof(ChaineReception));
   
 
 
//envoi
 routefichier:=Filename;
     Fenvoi:=Tfilestream.Create(routefichier,fmOpenRead);
 
 SetLength(Chaine, Fenvoi.Size);
 Fenvoi.Read(Chaine[1], Fenvoi.Size);
 ServerSocket1.Socket.Connections[0].SendBuf(Chaine[1],r); // r reste = 0 apres cette ligne ... donc il envoit RIEN!
 
 
 
 
 
 
 
toujours le meme probleme ... le fichier envoyé est vide chez celui qui recoit ! HELP ANTP :(


Message édité par piloud le 27-05-2003 à 19:07:57
n°409672
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 18:48:56  profilanswer
 

heu t'as mis le fmCreate pour le fichier que tu lis et le fmOpenRead pour le fichier que tu écris :crazy:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°409680
piloud
Posté le 27-05-2003 à 19:05:05  profilanswer
 

c pas ca .. ca cetait juste une erreur de transcription sur le forum .... dans ma source cetait deja comme ca !

n°409684
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 19:11:21  profilanswer
 

"// r reste = 0 apres cette ligne ... donc il envoit RIEN! "
 
heu là où t'as mis r tu dois mettre Fenvoi.Size
 
Le nombre d'octets transférés il le renvoie (r := ...)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°409696
piloud
Posté le 27-05-2003 à 19:34:31  profilanswer
 

voila pour lenvoi ca marche maintenant :)  
merci  
 
le probleme c pour la reception :  
 
//reception fichier
  freception:=Tfilestream.Create(extractfilepath (application.ExeName)+NomFichierReception,fmCreate and fmShareDenyNone);
   
 
  f:=socket.ReceiveLength;
  showmessage(inttostr(f)); // ca donne 0 ....
  SetLength(ChaineReception,f);
  socket.ReceiveBuf(ChaineReception[1],f);  
  freception.Write(ChaineReception[1],sizeof(ChaineReception));
 
Encore un help ! ptet que ca va marcher un jour !

n°409701
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 19:42:48  profilanswer
 

Ça par contre je sais pas :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 27-05-2003 à 19:42:48  profilanswer
 

n°409728
piloud
Posté le 27-05-2003 à 20:33:17  profilanswer
 

ca y est f marche ! . apparament c le socket.receivetext avant qui annuler le socket.receivelenght
 
jai un autre probleme :)  
 
la maintenant mon fichier recu n'est pas vide mais il contient uniquement les 4 premiers caractere du fichier envoyé donc encore une fois HELP :)
 
dans ma procedure clientsocketRead , jai donc ca :
 
if ITSFICHIER then
begin

f:=socket.ReceiveLength;  
 SetLength(ChaineReception,f);  
 socket.ReceiveBuf(ChaineReception,f);  
 socket.ReceiveBuf(ChaineReception,socket.ReceiveLength);  
 freception.Write(ChaineReception[1],sizeof(ChaineReception));
ITSFICHIER:=false;
end;

 
le truc c que je me demande si receivebuf il y va par accoups . (de 4 caractere a la fois ) or a la fin je met ITSFICHIER a false ce qui empecherai la suite de l'ecriture ...  
euh tu me comprend ?
si c ca , alors il faudrait reussir a mettre un espece de stop avant le ITSFICHIER=false;  
ou lui dire de le faire que quand lecriture totale du fichier est faite !


Message édité par piloud le 27-05-2003 à 20:40:25
n°409742
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 21:12:33  profilanswer
 

C'est par blocs de 8 Ko en général (du moins sous Win2000)
Je comprends pas très bien ce que tu veux là.
Le truc qu'y a c'est que quand tu envoies deux trucs à la suite, les deux arrivent concaténés de l'autre côté.
Pour éviter les problèmes, le plus simple est de dire que l'autre doit répondre (genre 'ok') avant qu'on envoie le message/données suivant.
C'est assez délicat à utiliser, et j'ai pas spécialement les meilleurs conseils là dedans, vu que quand j'ai dû utiliser ces sockets ça ressemblait fort à du bidouillage en fin de compte :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°409771
piloud
Posté le 27-05-2003 à 21:41:22  profilanswer
 

Tout ce que je veux , c que mon freception , il soit entier et que yest pas seulement les 4 premier caractere :( :cry:  :cry:  :cry:  
 
voila ... pourkoi il mecrit QUE les 4 premier caratere alors qu'il en a bien plus ? :( :(
 
et laisse tomber mon hypothese du dernier post , c n'inporte koi ...


Message édité par piloud le 27-05-2003 à 21:44:29
n°409847
mrbebert
Posté le 28-05-2003 à 00:07:00  profilanswer
 

piloud a écrit :

...
if ITSFICHIER then
begin

f:=socket.ReceiveLength;  
 SetLength(ChaineReception,f);  
 socket.ReceiveBuf(ChaineReception,f);  
 socket.ReceiveBuf(ChaineReception,socket.ReceiveLength);  
 freception.Write(ChaineReception[1],sizeof(ChaineReception));
ITSFICHIER:=false;
end;
..

Pourquoi il y a 2 fois un appel à socket.ReceiveBuf() ?
Et il ne faudrait pas boucler tant qu'il y a des données qui arrivent pour toute les récupérer ?

n°409938
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-05-2003 à 09:18:44  profilanswer
 

m'enfin je lui avais déjà dit qu'il devait pas le mettre 2x, j'avais pas vu qu'il l'avait encore fait :o
 
en effet il faudrait boucler, mais une chose à la fois, faudrait déjà que ça marche avec des petits fichiers :D


Message édité par antp le 28-05-2003 à 09:19:11

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°410307
piloud
Posté le 28-05-2003 à 13:29:26  profilanswer
 

euh oui le x2 , c parceque jai fait une copie du forum ...
ou yavait deja l'erreur mais bon ca c pu un probleme maintenant !  
 
je v essayer de boucler ! voir ce que ca donne !  
:)

n°410326
piloud
Posté le 28-05-2003 à 13:45:12  profilanswer
 

Bon recapitulons parceque la ca marche pas :)  
puis ya un truc que je trouve zarbe !  
 
jai un fichier de 710 bytes !
 
SetLength(Chaine, Fenvoi.Size);
 Fenvoi.Read(Chaine[1], Fenvoi.Size);
 r:=Fenvoi.Size;
 ServerSocket1.Socket.Connections[0].SendBuf(Chaine[1],r);
 i:=i+r;
 log.Lines.Add('Upload ..' + inttostr(i) +' bytes');
 //ici jai i=710 donc TOUT le fichier a te envoyé normalement !
 log.Lines.Add('Envoi Terminé');
 
 
au moment du receive jai un tout petit peu modif le code en :  
 
if ITSFICHIER=true then
 begin
 //reception fichier
  f:=socket.ReceiveLength; // la f est bien egale a 710 bytes donc il a normalement tout le fichier non ?
  SetLength(ChaineReception,f);
  socket.ReceiveBuf(ChaineReception[1],f);
  freception.Write(ChaineReception[1],sizeof(ChaineReception));
   if freception.Size>=f then //ca ca narrive pas vu que il sentete a n'ecire que les 4 premier bytes ...  
   ITSFICHIER:=false;
  exit;
 end;
 
je me suis dit que ca venait ptet de l'envoi .. la boucle faut il la faire lors de l'envoi et si oui , comment ?


Message édité par piloud le 28-05-2003 à 13:45:58
n°410458
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-05-2003 à 15:17:29  profilanswer
 

sizeof(ChaineReception) -> 4 octets car ChaineReception est un pointeur 32 bits vers une chaîne de caractères :o
 
pourquoi tu mets pas f comme sur les lignes précédentes ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°410551
piloud
Posté le 28-05-2003 à 15:43:08  profilanswer
 

CA MARCHE !!!!!!!!  
CA MARCHE !!!!!!!!
CA MARCHE !!!!!!!!  
CA MARCHE !!!!!!!!CA MARCHE !!!!!!!!  
CA MARCHE !!!!!!!!CA MARCHE !!!!!!!!  
CA MARCHE !!!!!!!!CA MARCHE !!!!!!!!  
CA MARCHE !!!!!!!!CA MARCHE !!!!!!!!  
CA MARCHE !!!!!!!!CA MARCHE !!!!!!!!  
CA MARCHE !!!!!!!!
 
cetait ca le probleme !  
merci pour tout ca marche impec ! :)

n°1156554
Inekman
Posté le 21-07-2005 à 21:39:56  profilanswer
 

Si on pouvait avoir un extrait du code de l'envoi et de la réception histoire de faire plaisir à tout le monde ça serait cool ^^

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Pb avec transfert de frichier par formulaireGros problème de transfert de BDD MySQL !
Problème de focus... [Résolu] -- Script à emporter tout chaud...C'est chaud l'utilisation de threads ?
Transfert FTP en ASPTransfert de base 10 en base 16 en C ??
[c++] transfert de fichier via un socketTransfert SGDB - SGDB d'un autre type
[HTML] Site web de transfert ftp[ java ] CHanger à chaud de JTree c possible ???
Plus de sujets relatifs à : Transfert d'informations ip to ip , c chaud ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)