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 :

BCB6 et Composant TTcpClient


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Par défaut BCB6 et Composant TTcpClient
    Bonjour,

    je cherche actuellement à créer un serveur tcp/IP sur lequel viennent se connecter des clients. Je l'avais déjà fait en visual c++ et je cherche à faire l'équivalent en BCB 6

    Pour le serveur j'ai utilisé le composant TTcpServer dans une application simple avec une form1 et j'ai ajouter un code de test dans l'accept :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm1::TcpServer1Accept(TObject *Sender,       TCustomIpClient *ClientSocket)
    {
      Application->MessageBox("lkj","lkj",0);
    }
    coté client j'ai fais de même dans une application avec une form1 avec un TTcpClient, ça marche, j'ai donc validé le fait que le serveur marche.



    Maintenant je voudrais faire la même chose avec un client en application console ( j'ai créé un projet C++ appli console VCL).
    problème : comment utiliser le TTcpClient sans "le poser" sur la Form1 (puisque c'est une application console, et donc il n'y a pas de form ) ?

    j'ai tenté d'inclure le seul .hpp dans lequel se trouvait une déclaration du TTcpClient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <sockets.hpp>
    mais lorsque j'essaye de créer un objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void ConnectToELPServer(void)
    {
     TTcpClient *a;
     a = new TTcpClient();
     a->RemoteHost="127.0.0.1";
     a->RemotePort=2205;
     
     AnsiString buffer;
     buffer="coucou je suis en vie";
     a->SendBuf(&buffer,10,0);
     
    }
    il se produit une erreur à la compilation :

    [C++ Erreur] Unit1.cpp(72): E2285 Impossible de trouver une correspondance pour 'TTcpClient::TTcpClient()'
    en fait à la création de l'objet, le constructeur attend un type précis.

    extrait du .hpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* TCustomIpClient.Create */ inline __fastcall virtual TTcpClient(Classes::TComponent* AOwner) : TCustomIpClient(AOwner) { }
    je dois donc lui donner un TComponent si je comprends bien ?
    mais ... qu'est-ce qu'il en fait et qu'est-ce que je peux bien lui donner ???

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Argol_Medusa
    Regarde ce lien sur le site
    D'apres ce que j'en ai lu ta declaration devrait etre quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TcpClient monClientTcp = new TcpClient(nomServeur, port);

  3. #3
    Membre très actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Par défaut
    ça ne marche pas, mais je crois que l'on ne parle pas de la même classe en fait.

    La classe que j'utilise est la TTcpClient ( dans l'onglet internet de la barre toolbox de Borland builder 6 ), et non la TcpClient qui doit venir de visual d'après ce que j'ai compris.

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Salut,
    un simple NULL devrait fonctionner, tu n'as pas de Component à lui passer, donc tu ne vas pas lui en inventer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TcpClient monClientTcp = new TcpClient(NULL);

  5. #5
    Membre très actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Par défaut
    Arrggg! Effectivement ça marche mieux !

    Merci pour le tuyau Pottiez !

    je copie/colle le code, ça peut toujours aider quelqu'un par la suite :

    ( il s'agit donc d'un client TCP/IP qui se connecte, envoie un "coucou" et se déconnecte, en application console )

    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
     
    void ConnectToELPServer(void)
    {
       TTcpClient *a;
       a = new TTcpClient(NULL);
     
       a->RemoteHost="127.0.0.1";  // le serveur est sur le même PC
       a->RemotePort=2205;
       a->Open(); // Ouvre la connection avec le serveur TCP/IP
     
       char buf[30];  // le buffer qu'on va envoyer en TCP/IP
       AnsiString buffer; // le buffer qu'on va manipuler ( plus simple que les char ).
     
       buffer="coucou je suis en vie"; // la string qu'on va envoyer
     
       //conversion AnsiString en char
       for (int n=1 ; n<buffer.Length()+1 ; n++)
          buf[n-1]=buffer.operator [](n);
       buf[buffer.Length()]='\0';
     
       a->SendBuf(&buf,30,0); // envoie la donnée
       a->Close(); // ferme la connection
       system("pause");
    }
    attention à ne pas oublier le #include <sockets.hpp> au début de programme, appeler cette fonction dans le main et ça marche

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

Discussions similaires

  1. ou trouver des composants de bcb6 ou 2006
    Par chamamo dans le forum C++Builder
    Réponses: 13
    Dernier message: 22/10/2006, 18h47
  2. [bcb6]palette des composants
    Par lucky31 dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/10/2006, 15h22
  3. [BCB6 ->BDS2006] Composant
    Par FredericB dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/07/2006, 00h29
  4. [BCB6]Redimentionnement manuel d'un composant TImage
    Par vsavoir dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/09/2004, 11h55
  5. [BCB6] Couleur des composants et interfaces
    Par vsavoir dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/08/2004, 17h20

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