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 d'envoi de données avec TTcpServer


Sujet :

C++Builder

  1. #1
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut Problème d'envoi de données avec TTcpServer
    Salut à tous

    Je fais une petite application qui en pilote une autre via une connexion TCP/IP

    Dans le OnAccept de mon TCPServer j'ai mis ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void __fastcall TForm1::TcpServer1Accept(TObject *Sender, TCustomIpClient *ClientSocket)
     
    {
    	 Memo1->Lines->Add("Accepte");
    	 char buff[32];
    	 sprintf(buff,"CONNEXIONOK");
    	 g_pClientSocket=ClientSocket;
    	 g_pClientSocket->SendBuf(buff, strlen(buff), 0);
    }
    Lorsque j'appuis sur un bouton je veux envoyer le mot TRIGGER à mon client
    mais hélas ce dernier ne reçoit rien. Alors qu'il a bien reçu le message envoyé dans OnAccept

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void __fastcall TForm1::BtnTriggerClick(TObject *Sender)
    {
    	char buff[32];
    	if (g_pClientSocket != NULL)
    	{
    	 sprintf(buff,"TRIGGER");
    	 g_pClientSocket->SendBuf(buff, strlen(buff), 0);	 
    	}
    }
    J'ai l'impression que g_pClientSocket n'est plus valide ou alors je n'ai rien compris
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    J'ai assez peu utiliser le TTCPServer, bien moins pratique que le TServerSocket
    As-tu testé avec un Telnet ou un client de test avec un TTCPClient ou TClientSocket (regarde dans les démos comme NetChat, moi ce fut la base d'un outil de test en D5 et D6)

    Si tu n'envoie que des chaines, utilise Sendln, c'est bien plus pratique !

    Sinon, ta gestion des chaines peut être simplifié si tes chaines restent des constantes, tu peux directement affecté l'adresse de la constante à un char* normalement SendBuf ne fait que lire les données


    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
    TSockAddrIn gAddrClient = {AF_UNSPEC};
     
    void __fastcall TForm1::TcpServer1Accept(TObject *Sender, TCustomIpClient *ClientSocket)
     
    {
    	 Memo1->Lines->Add("Accepte");
    	 char* buff = "CONNEXIONOK";
    	 ClientSocket->SendBuf(buff, strlen(buff), 0);
             gAddrClient = ClientSocket->GetSocketAddr(ClientSocket-> LocalHostAddr, ClientSocket->LocalPort);
    }
     
    void __fastcall TForm1::BtnTriggerClick(TObject *Sender)
    {
    	if (gAddrClient.sin_family == AF_INET)
    	{
    	  char* buff = "TRIGGER";
    	  TcpServer1->SendTo(buff, strlen(buff), gAddrClient, 0);	 
    	}
    }
    Pense qu'un Server peut avoir plusieurs Clients !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Ca ne fonctionne pas je crois que je vais revenir au TServerSocket
    LocalHostAddr me retourne bien l'adresse de ma machine par contre LocalPort retourne NULL et si je le force à la valeur de mon port ça ne marche pas plus.

    Par contre il n'y a qu'un seul client possible donc je ne me suis pas préoccupé des connexions multiples
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

Discussions similaires

  1. Problème Update Base de données avec les composants ADO
    Par lingli dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/04/2006, 00h41
  2. Problème d'envoi d'email avec Jmail
    Par Mat5725 dans le forum ASP
    Réponses: 2
    Dernier message: 09/12/2005, 15h34
  3. Problème d'affichage de données avec crystal report
    Par napegadie dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 07/12/2005, 15h45
  4. Problème d'envoie de text avec les sockets
    Par Coussati dans le forum Web & réseau
    Réponses: 6
    Dernier message: 16/09/2005, 10h26
  5. Réponses: 2
    Dernier message: 14/05/2004, 14h32

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