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

C++ Discussion :

Upload un fichier


Sujet :

C++

  1. #1
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut Upload un fichier
    Bonjour

    Voila j'ai un programme c++ dotnet qui doit envoyer un fichier sur un serveur toutes les 1/2 secondes et je ne doit pas faire ca en ftp.


    Alors voila , j'utilise un timer . Mais mon prof ma conseillé d'envoyer les fichiers dans une simple requete post php.

    Proplème-> je sais pas comment faire , alors can you rescue me ?

    Merci,


    Lionceau,

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Citation Envoyé par lionceau Voir le message
    Voila j'ai un programme c++ dotnet
    En C++, C++/CLI ou en C# ?
    Une requête pos php ? Connais pas. Une requête post HTTP ? Comme celle de ta précédente question ? Ça devrait marcher, non ?

  3. #3
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    En C++ avec Microsoft Visual Studio 2008.

    Donc c 'est du c++ .net

  4. #4
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Autre information qui peux étre utile pour la comprehension.
    Ce programme prend une image sur un serveur avec l'adresse indiqué(par exemple pour moi : C'est une webcam IP , http://192.168.1.125/mavideo.jpg ) . Puis il doit envoyer cette image sur un autre serveur.

    Je dois pas le faire en ftp , je dois envoyer un fichier de type image comme une simple socket.. et je sais comment faire ca..

    Alors si vous avez une idée ou piste, je vous écoute.

    Merci pour votre aide.

    Cordialement,

    Lionceau,

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    C++ .net que ce soit avec Visual ou pas n'existe pas.
    Plus sérieusement, je ne comprend pas ta question : tu dis savoir émettre ton fichier par socket, tu as mis en place un timer. Donc quel est le problème ? Le timer ne marche pas ?

  6. #6
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Salut,

    Excuse moi, j'ai mal lu ta précedente réponse, oui voila ce qu'il faut
    Une requête post HTTP ? Comme celle de ta précédente question ? Ça devrait marcher, non ?
    http://www.developpez.net/forums/d86...p/#post4935909

    Mais comment envoyer un fichier par socket ?


    Lionceau,

  7. #7
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Salut,

    J'utilise les composantes graphique de visual.
    On parle alors de c++ mfc ? c 'est ca ?

    Concrétement, je sais pas envoyer un fichier et c' est ce que je cherche. Le timer fonctionne à 100% et je l'utilise pour raffraichir les images de la webcam

    Citation Envoyé par 3DArchi Voir le message
    Salut,
    C++ .net que ce soit avec Visual ou pas n'existe pas.
    Plus sérieusement, je ne comprend pas ta question : tu dis savoir émettre ton fichier par socket, tu as mis en place un timer. Donc quel est le problème ? Le timer ne marche pas ?
    Lionceau,

  8. #8
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Je suis pas d'accord avec toi ->
    C++ .net que ce soit avec Visual ou pas n'existe pas.
    .

    Car sur ce lien on parle de
    VC++ .NET
    http://www.developpez.net/forums/f29...pp/visual-cpp/


    Lionceau,

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    On va pas épiloguer pendant des centaines de messages sur C++ dot net
    Pour répondre à ta question, si tu veux envoyer un fichier par une socket (c'est à dire sans protocole autre que TCP ou UDP pour le transport), tu fais comme pour ta requêtre HTTP :
    -> std::vector<unsigned char> pour un buffer
    -> lecture de n octets (la totalité éventuellement) du fichier dans le vecteur
    -> send(sock, &vecteur[0], vecteur.size(), 0) en TCP. Presque pareil en UDP sauf qu'il te faudra probablement morceler le message en blocs plus petits et gérer la perte et l'ordre d'arrivée qu'UDP ne garantie pas.

  10. #10
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Salut,

    Je n'ai pas compris :
    -> std::vector<unsigned char> pour un buffer
    -> lecture de n octets (la totalité éventuellement) du fichier dans le vecteur
    -> send(sock, &vecteur[0], vecteur.size(), 0)
    Concrétement coment faire ca ? as tu un exemple?

    Lionceau,

  11. #11
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Peux-tu préciser exactement ce que tu veux faire ? Lire un fichier et l'envoyer avec un HTTP POST ? Lire un fichier, l'envoyer 'sans protocole' vers un serveur distant où un programme à toi est à l'écoute ? Réviser tes cours réseaux et C++ ?

  12. #12
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Salut,

    Je veux juste envoyer un fichier sur un serveur distant.

    j'ai un programme c++ dotnet qui doit envoyer un fichier sur un serveur toutes les 1/2 secondes et je ne doit pas faire ca en ftp.



    Lionceau,

  13. #13
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <fstream>
    #include <vector>
     
    void lire_fichier(std::string const& fichier_, std::vector<char> &buffer_)
    {
       // lecture :
       std::ifstream is;
       is.open (fichier_.c_str(), std::ios::binary );
     
       // get length of file:
       is.seekg (0, std::ios::end);
       buffer_.resize(is.tellg());
       is.seekg (0, std::ios::beg);
     
       // read data as a block:
       is.read (&buffer_[0],buffer_.size());
       is.close();
    }
    (copier/coller d'un de tes codes et légèrement adapté)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <vector>
    #include <winsock.h>
    void envoyer_fichier(std::string const &local_addr_, std::string const& remote_addr_, unsigned short port_, std::vector<char> const&buffer_)
    {
       SOCKET sock;
       SOCKADDR_IN sin;
       sin.sin_addr.s_addr = inet_addr(local_addr_.c_str());
       sin.sin_family = AF_INET;
       sin.sin_port = htons(port_); // port HTTP.
     
       sock = socket(AF_INET,SOCK_STREAM,0);
       bind(sock, reinterpret_cast<sockaddr*>(&sin), sizeof(sin));
     
       SOCKADDR_IN sout;
       sout.sin_addr.s_addr = inet_addr(remote_addr_.c_str());
       sout.sin_family = AF_INET;
       sout.sin_port = htons(port_); // port HTTP.
     
       connect(sock, reinterpret_cast<sockaddr*>(&sout), sizeof(sout)); // on se connecte sur le site web.
       send(sock, &buffer_[0], buffer_.size(), 0); // on envoie la requête HTTP.
    }
    Mais il y a certainement + simple avec les MFC. En gros, ça te donne le schéma à suivre.

  14. #14
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Mais il y a certainement + simple avec les MFC.
    Peux étre mais je ne sais pas comment faire..


    Ok, je vais essayé ça, merci , mais coté serveur, comment ca se passe?



    Voila j'ai essayé ok ca compile, une question : dans le 1er paramétre je rentre l'adresse du fichier à lire, mais dans le deuxieme ce sera quoi? je n'ai pas compris cette notion de
    vector
    de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lire_fichier(std::string const& fichier_, std::vector<char> &buffer_)


    Ensuite même question pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<char> const&buffer_
    de la fonction ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     envoyer_fichier(std::string const &local_addr_, std::string const& remote_addr_, unsigned short port_, std::vector<char> const&buffer_)

    Lionceau,

  15. #15
    Membre régulier
    Avatar de lionceau
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 148
    Points : 111
    Points
    111
    Par défaut
    Salut, peux tu m'expliqer :
    Voila j'ai essayé ok ca compile, une question : dans le 1er paramétre je rentre l'adresse du fichier à lire, mais dans le deuxieme ce sera quoi? je n'ai pas compris cette notion de vector

    Cordialement,


    Lionceau.

  16. #16
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    std::vector<unsigned char> remplace avantageusement un const unsigned char[]. Ils 'agit du conteneur permettant d'avoir une zone contigüe d'éléments et donc pouvant être adressée comme un buffer. Voir ce tuto : LA LIBRAIRIE STANDARD DU C++.
    P.S. & dans le type d'un paramètre de fonction n'indique pas une adresse/pointeur mais une référence.

Discussions similaires

  1. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  2. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02
  3. upload de fichier
    Par 120 dans le forum ASP
    Réponses: 16
    Dernier message: 21/06/2004, 12h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. Upload de fichiers
    Par GDVL dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2004, 12h44

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