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++Builder Discussion :

Problème dans l'utilisation du composant Stream Serveur - FastNet


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut Problème dans l'utilisation du composant Stream Serveur - FastNet
    Bonjourn
    voici mon code qui est censé transférer un fichier bmp de A vers B, dans un réseau local.
    je ne veux pas utilisé les composants Seveurs socket car j'ai des fichier de 500 ko, et envoie en boucle infinie (surveillance), et je n'ai pas trop de temp pour découper les fichier et les regrouper a la fin, j'ai besoin d'un composant simple qui fait le transfert, "sendfile".
    une application a un client "NMStrm" et l'autre un serveur "NMStrmServer".
    voici le code du client :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TClient *Client;
    //---------------------------------------------------------------------------
    __fastcall TClient::TClient(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TClient::Button1Click(TObject *Sender)
    {
    TFileStream *MyFStream ;
     
    //  MyFStream = NULL ;
      MyFStream = new TFileStream("stégané Photo 02-03-13-968.bmp", fmOpenRead);
     
        NMStrm1->Port = 6711;
        NMStrm1->Host= Edit1->Text;
        NMStrm1->FromName= "salim";
        //if ( (NMStrm1->PostIt(MyFStream) == "OK") ) { Memo1->Lines->Add("Fichier a été envoyé"); }
        //else { Memo1->Lines->Add("Fichier non envoyé"); }
        Memo1->Lines->Add("Status : " + (NMStrm1->PostIt(MyFStream)) );
     
    delete MyFStream ;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TClient::NMStrm1MessageSent(TObject *Sender)
    {
    Memo1->Lines->Add("Méssage a été envoyé");
    }
    //---------------------------------------------------------------------------
    void __fastcall TClient::NMStrm1Connect(TObject *Sender)
    {
    Memo1->Lines->Add("connecté");
    }
    //---------------------------------------------------------------------------
    void __fastcall TClient::NMStrm1ConnectionFailed(TObject *Sender)
    {
    ShowMessage ("Impossible de se connecter");
    }
    //---------------------------------------------------------------------------
    void __fastcall TClient::NMStrm1Disconnect(TObject *Sender)
    {
    Memo1->Lines->Add("déconnecté");
    }
    //---------------------------------------------------------------------------
    void __fastcall TClient::NMStrm1InvalidHost(bool &Handled)
    {
    Memo1->Lines->Add("adresse incorrecte");
    }
    aucun problème jusqu'ici.
    et voici le code du serveur :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TServeur *Serveur;
    int i = 0;
    //---------------------------------------------------------------------------
    __fastcall TServeur::TServeur(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TServeur::NMStrmServ1MSG(TComponent *Sender,
          const AnsiString sFrom, TStream *strm)
    {
    Label1->Caption = sFrom;
    /*TFileStream *MyFStream ;
     
      i = i + 1 ;
      MyFStream = NULL ;
      MyFStream = new TFileStream("Photo 02-03-13-968 - " + String(i) + ".bmp", fmCreate);
      try
      {
        MyFStream->CopyFrom(strm, strm->Size);
      }
      catch(...)
      {
      }
     
      MyFStream->Free();
    */
    //Memo1->Lines->Add("transfert initié.");
      }
    //---------------------------------------------------------------------------
     
    void __fastcall TServeur::NMStrmServ1ClientContact(TObject *Sender)
    {
    NMStrmServ1->Port = 6711;
    NMStrmServ1->Host = "127.0.0.1";
    Memo1->Lines->Add("Le client s'est connecté.");
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TServeur::NMStrmServ1Disconnect(TObject *Sender)
    {
    Memo1->Lines->Add("Le client s'est déconnecté.");
    }
    //---------------------------------------------------------------------------
    void __fastcall TServeur::NMStrmServ1Connect(TObject *Sender)
    {
    Memo1->Lines->Add("connecté");
    }
    //---------------------------------------------------------------------------
    void __fastcall TServeur::NMStrmServ1ConnectionFailed(TObject *Sender)
    {
    ShowMessage ("Impossible de se connecter");
    }
    //---------------------------------------------------------------------------
    void __fastcall TServeur::NMStrmServ1InvalidHost(bool &Handled)
    {
    Memo1->Lines->Add("adresse incorrecte");
    }
    //---------------------------------------------------------------------------
    j'ai mis le code permettant d'enregistrer le fichier en commentaire.

    et voici mon problème :
    Lors d'un premier transfert tout se passe bien, mais dès qu'un autre suit apres, il y'a une erreur qui est déclenché, ESockError, socket operation on non socket, et ça quand le code permettant d'enregistrer le fichier est en commentaire.
    quand il n'est pas en commentaire, tout va bien pour le premier transfert, le deuxième apparament aussi, sauf, qu'apres avoir attendu 50 ou 60 sec apres le 2ème transfert, une erreur ce déclenche, "violation d'accès mémoire", et ceux, au nom de transfert - 1, je ne sais pas si c'est car Serveur stream ne traite que le transfert d'un fichier ou pas
    bref, j'aimerai votre avis, si ce n'est la solution
    merci !!!!!

  2. #2
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut
    slt kratosss,

    si tu veux envoyer des images , je peux te proposer mon code

    il utilise le composant TCP , c'est un envoi en streaming.

    tu ne gère rien

    tcp->senstream(file);

    tcp->readstream(file);

    je vérifie et te prépare cela si tu veux ?!

    sinon j'ai aussi fais un petit programme qui envoi des fichier par decoupage
    lecture binaire du fichier et envoi.

    Dis moi lequel tu veux
    @+

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut
    oui végéta, et vraiment désolé pour le retard, y'a ma connexion qui déconne au moment ou j'en ai le plus besoin, c'est pour mon projet de fin d'étude.
    j'aimerais bien voir ton code sur le composant TCP
    merci

  4. #4
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut
    je t'ai préparé un exemple avec

    Le composant tcp pour envoie de fichier image ( streaming )

    Téléchargement ici : Streaming_tcp.rar

    j'ai déposé un exemple avec socket dans ce forum

    http://www.developpez.net/forums/sho...d.php?t=302347
    http://www.developpez.net/forums/sho...d.php?t=298136

    Le composant Socket envoi de fichier par trame en lecture binaire
    http://www.createsoft.be/opensource/

    Téléchargement ici : Sendfile_Socket.rar

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut c bonnnn !!!!!
    merci beaucoup végéta pour ton code TCP , j'avais pas remarqué ce composant, quand t'a dis TCP je suis aller voir du coté internet, enfin bref merci beaucoup, je vais le modifier a ma manière, j'espère que ça va marcher , a+.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans l'utilisation d'un tableau
    Par NoiBe dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 16/05/2007, 16h19
  2. problème dans l'utilisation de g_access()
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 18
    Dernier message: 02/03/2007, 14h57
  3. Problème dans l'utilisation du WebBrowser
    Par MCShiff dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/01/2007, 12h52
  4. probléme dans l'utilisation d'un tableau
    Par hamoudasafira dans le forum C++
    Réponses: 10
    Dernier message: 13/12/2006, 08h50

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