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

  FORUM HardWare.fr
  Programmation
  C++

  [ C ] Comment faire pour transferer un exécutable (type linux : ELF)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ C ] Comment faire pour transferer un exécutable (type linux : ELF)

n°125016
djoh
Posté le 12-04-2002 à 03:34:38  profilanswer
 

Je cherche à tranférer un fichier sur un socket donné.
à l'entré du socket, on a un write qui écrit le fichier
à la sortie (un ordinateur distant), on a un read qui réceptionne le résultat.
 
le probleme, c'est que ça veut pas fonctionner avec les fichier ELF.
Par contre ça fonctionne tres bien avec les fichiers texte ASCII
 
j'ai besoin d'aide là... je vois pas ce qui va pas

mood
Publicité
Posté le 12-04-2002 à 03:34:38  profilanswer
 

n°125031
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-04-2002 à 09:33:51  profilanswer
 

Ne serait-ce pas par hasard parce que tu ouvres ton fichier en mode texte au lieu de binaire ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°125075
djoh
Posté le 12-04-2002 à 10:51:00  profilanswer
 

antp a écrit a écrit :

Ne serait-ce pas par hasard parce que tu ouvres ton fichier en mode texte au lieu de binaire ?  




 
 :??:  :heink:  :crazy:  
pas compris là... en C on choisis pas le type de fichier à l'ouverture, ou il y a quelque chose qui m'échappe
voilà comment je l'ouvre :
 
open(file_name, O_WRONLY | O_CREAT | O_TRUNC, 0640);
ça c'est pour celui qui lit dans le socket ce qu'il écrit dans le fichier (celui qui déconne à priori).
 
et celui qui lit dans le fichier ce qu'il écrit dans le socket :
open(file_name, O_RDONLY);
 
merci de m'aider en tout cas  :hello:

n°125088
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-04-2002 à 11:07:16  profilanswer
 

Rajoute O_BINARY dans tes deux open


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°125093
Jar Jar
Intaigriste
Posté le 12-04-2002 à 11:12:18  profilanswer
 

antp a écrit a écrit :

Rajoute O_BINARY dans tes deux open


O_BINARY n'existe pas sous Unix.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°125106
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-04-2002 à 11:28:10  profilanswer
 

Ha, bhen j'aurai apris un truc alors :/
C'est vrai qu'y a que sous Windows qu'il y a c'est problèmes mode texte / mode binaire avec les retour de lignes qui prennent 2 octets...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°125113
Jar Jar
Intaigriste
Posté le 12-04-2002 à 11:34:14  profilanswer
 

Pas que sous Windows, je crois qu'il y en a sous Mac aussi (peut-être plus avec MacOS X).


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°125125
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-04-2002 à 11:44:16  profilanswer
 

Je croyais que sous mac c'était un seul aussi, mais pas le même que Linux (l'autre en fait, l'un c'est 10 et l'autre c'est 13).


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°125126
djoh
Posté le 12-04-2002 à 11:44:40  profilanswer
 

ben ok, mais ça resoud pas mon pb alors
moi je fais le test entre deux machine linux (et faut que ce soit compatible unix aussi)
 
alors, une idée ?

n°125144
djoh
Posté le 12-04-2002 à 12:01:50  profilanswer
 

rrraaaaaaahh !  :o  
 
 [:djoh]

mood
Publicité
Posté le 12-04-2002 à 12:01:50  profilanswer
 

n°125161
djoh
Posté le 12-04-2002 à 12:23:46  profilanswer
 

... euuuuh ... up  :sweat:

n°125194
BENB
100% Lux.
Posté le 12-04-2002 à 13:06:29  profilanswer
 

Quel est le symptome ?
le fichier transfere a-t-il la meme taille que le fichier d'origine ?
as-tu fait une comparaison des fichiers ?

n°125202
djoh
Posté le 12-04-2002 à 13:31:12  profilanswer
 

BENB a écrit a écrit :

Quel est le symptome ?
le fichier transfere a-t-il la meme taille que le fichier d'origine ?
as-tu fait une comparaison des fichiers ?  




 
pour un fichier texte (ASCII), il transfere nickel
pour un exécutable, ça passe pas du tout, il fait des truc bizarre (je saurais pas trop être plus précis) : on a l'impression qu'il bloc au read sur le socket
 
 
PS : ça bloc du cote du poste qui lit dans le socket, celui qui écrit ne réagit pas (comme si tout se passait bien)

 

[jfdsdjhfuetppo]--Message édité par djoh--[/jfdsdjhfuetppo]

n°125668
djoh
Posté le 14-04-2002 à 13:59:46  profilanswer
 

[:djoh]  
alors, toujours pas d'idées

n°125669
youdontcar​e
Posté le 14-04-2002 à 14:06:55  profilanswer
 

tu le transfères comment ton fichier ? si tu le lis dans un buffer après l'avoir ouvert avec un fopen(..., "rb" ) (b pour binary), il ne devrait pas y avoir de problème.
 
sinon, teste autre chose : essaye d'envoyer un buffer de 256 bytes rempli des 256 caractères (char buf[256]; for (i=0; i<256; i++) buf[i] = i;), etc.

n°125670
youdontcar​e
Posté le 14-04-2002 à 14:07:58  profilanswer
 

si tu veux du code source pour t'inspirer, il y a http://www.sockaddr.com/ExampleSourceCode.html : chercher le client et le serveur HTTP.

n°125671
djoh
Posté le 14-04-2002 à 14:20:48  profilanswer
 

youdontcare a écrit a écrit :

tu le transfères comment ton fichier ? si tu le lis dans un buffer après l'avoir ouvert avec un fopen(..., "rb" ) (b pour binary), il ne devrait pas y avoir de problème.
 
sinon, teste autre chose : essaye d'envoyer un buffer de 256 bytes rempli des 256 caractères (char buf[256]; for (i=0; i<256; i++) buf[i] = i;), etc.  




 
je peux pas utiliser fopen parce que le stream est une socket (on peut p-t mais j'ai pas trouver au moment de tapper cette partie du code, donc je me demerde avec les read/write/open et descripteur de flux de type entier

n°125672
djoh
Posté le 14-04-2002 à 14:21:08  profilanswer
 

youdontcare a écrit a écrit :

si tu veux du code source pour t'inspirer, il y a http://www.sockaddr.com/ExampleSourceCode.html : chercher le client et le serveur HTTP.  




 
merci, je vais matter ça :jap:

n°125676
youdontcar​e
Posté le 14-04-2002 à 14:24:36  profilanswer
 

djoh a écrit a écrit :

je peux pas utiliser fopen parce que le stream est une socket


mais comment envoies-tu ton fichier ? faut bien que tu le lises dans un buffer avant de l'envoyer ...  
 
>> à l'entré du socket, on a un write qui écrit le fichier  
 
d'où vient le fichier ?

n°125678
djoh
Posté le 14-04-2002 à 14:33:39  profilanswer
 

youdontcare a écrit a écrit :

mais comment envoies-tu ton fichier ? faut bien que tu le lises dans un buffer avant de l'envoyer ...  
 
>> à l'entré du socket, on a un write qui écrit le fichier  
 
d'où vient le fichier ?  




 
pour envoyer un fichier du client vers le serveur :
 
client :
fd=open(...)
read(fd,buf,size)
write(socket,buf,size)
 
serveur :
fd=open(...)
read(socket,buf,size)
write(fd,buf,size)
 
je pense que le nom des variable est assez clair : comme ça , ça marche bien pour un fichier texte mais pas pour un ELF


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [ C ] Comment faire pour transferer un exécutable (type linux : ELF)

 

Sujets relatifs
Un prog en C compilé sous Linux sera-t-il executable sous NT ?[Delphi] Envoi d'un type somme via les Sockets
[java] comment installer le sdk 1.4 sous linux ?[java/linux] un bon IDE pour java sous linux ... !
QQun veut il porter NETI sous Linux ?[LINUX] Lancement automatique via url (protocol)
[C/C++] Mémoire totale du PC sous Linux !comment définir un type récursif en ADA ? URGENT !
Livre sur la prog reseau sous GNU/linux 
Plus de sujets relatifs à : [ C ] Comment faire pour transferer un exécutable (type linux : ELF)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR