IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Ecrire un fichier distant grâce aux GIOChannel


Sujet :

GTK+ avec C & C++

  1. #1
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Ecrire un fichier distant grâce aux GIOChannel
    Bonjour,

    J'essaie d'uploader un fichier en ouvrant une socket FTP (grâce à NanoFTP de la libxml2) et ensuite je créé un GIOChannel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    GIOChannel* ioc = g_io_channel_unix_new (socket);
     
    g_io_channel_write_chars (ioc, "test\n", -1, NULL, NULL);
    g_io_channel_shutdown (ioc, TRUE, NULL);
    Le fichier est bien créé sur le serveur (donc la socket FTP fonctionne), l'écriture me retourne bien le bon nombres de caractères écrit mais rien, le fichier reste désespérément vide

    Quelqu'un à déjà joué avec les sockets ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Points : 116
    Points
    116
    Par défaut
    Cette année, j'ai suivi des cours de network en UDP et TCP, et je peux dire que nos programmes étaient bien plus longs que ces 3 lignes (initilisation du socket (ports & ip), remplissage de la structure de données à envoyer,...).

    Donc je me demande au premier abord (bien que n'ayant jamais fait de FTP) s'il ne manque pas quelques fonctions à ton programme.

    Sinon, essaye de vérifier si ton fichier est bien fermé sur le serveur car je crois que dans le cas contraire, ça n'enregistre pas les modifications. (Vérifie aussi les droits en écriture).

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Dans la glib 2.16, tu as toute l'API des GIO (à ne pas confondre avec les GIOChannels) qui devraient te permettre d'écrire directement ton fichier sur un serveur FTP, et ce en qques lignes.

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par NeMo_O Voir le message
    Cette année, j'ai suivi des cours de network en UDP et TCP, et je peux dire que nos programmes étaient bien plus longs que ces 3 lignes (initilisation du socket (ports & ip), remplissage de la structure de données à envoyer,...).
    J'ai justement précisé que j'ouvrais une socket grâce à NanoFTP qui s'occupe de faire le sal travaille à ma place.

    Citation Envoyé par NeMo_O Voir le message
    Sinon, essaye de vérifier si ton fichier est bien fermé sur le serveur car je crois que dans le cas contraire, ça n'enregistre pas les modifications. (Vérifie aussi les droits en écriture).
    Le fichier est bien modifié, s'il est remplie, il est remis à zéro. C'est juste l'écrire qui n'est pas faite, même en rajoutant un flush. Pour fermer la connexion, j'utilise la fonction xmlNanoFTPQuit qui envoi la commande QUIT au verveur.

    Citation Envoyé par teuf13 Voir le message
    Dans la glib 2.16, tu as toute l'API des GIO (à ne pas confondre avec les GIOChannels) qui devraient te permettre d'écrire directement ton fichier sur un serveur FTP, et ce en qques lignes.
    ça m'a bien traversé l'esprit mais après un rapide survole de la doc je n'ai rien trouvé. Peut être g_file_new_for_uri ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Citation Envoyé par gege2061 Voir le message
    ça m'a bien traversé l'esprit mais après un rapide survole de la doc je n'ai rien trouvé. Peut être g_file_new_for_uri ?
    Ca me paraît pas mal... Avec un truc du style ftp://hostname/pub/toto/monfichier.txt pour l'uri.

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Ca me paraît pas mal... Avec un truc du style ftp://hostname/pub/toto/monfichier.txt pour l'uri.
    J'ai le droit à une belle erreur :
    WARNING **: Opération non prise en charge
    J'ai fouillé un peu le code, apparemment seul les opérations locales sont implémentées

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Oui, les opérations distantes sont implémentées par GVFS, qui s'installe en plus de la glib il me semble. GVFS implémente l'API décrite par GIO par contre (GIO est uniquement une interface, et GVFS implémente cette interface)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 14
    Points
    14
    Par défaut Flush après écriture
    Salut,

    après avoir écrit les caractères, as tu appelé la fonction suivante :

    g_io_channel_flush(..)

    ?

Discussions similaires

  1. Ecrire un fichier sur un serveur distant
    Par ArnaudDev dans le forum Applets
    Réponses: 1
    Dernier message: 17/07/2009, 13h28
  2. [FTP] Ecrire sur un fichier distant via ftp
    Par jules_diedhiou dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2009, 14h23
  3. accès aux fichiers distants
    Par scorpiwolf dans le forum Langage
    Réponses: 5
    Dernier message: 29/08/2008, 14h25
  4. Ecrire fichier distant via afp
    Par crochepatte dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 24/01/2007, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo