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 de communication socket (Client->Server)


Sujet :

C++Builder

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut Problème de communication socket (Client->Server)
    Bonsoir à tous !
    voilà le problème :
    J'ai un composant TClientSocket et TServerSocket.
    J'arrive à connecter les deux en faisant fonctionner 2 appli différentes.
    Mais après lorsque j'envoie du Texte via la socket. Le texte reçu par l'événement OnClientRead du server est NULL !

    Infos : J'appelle le fonction SendText(AnsiString ...) pour que la socket envoit celui-ci mais dans une fonction externe aux événements des 2 composants.

    J'espère au moins avoir 1 réponse ! svp !

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 69
    Points
    69
    Par défaut
    Salut

    Donc tu as utilisé cette fonction pour envoyer du texte à ton serveur :
    ClientSocket1->Socket->SendText("Toto");

    Et pour recevoir des données coter serveur tu as la méthode ServerSocket1ClientRead.

    Tu récupères le texte envoyer :
    ShowMessage("Socket->ReceiveText()");

    Voila pour l'échange de texte, mais est-tu sur que tu arrives à te connecter à ton serveur ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Le client et le serveur sont bien connectés.
    Je fais un showmessage comme tu me l'as indiqué mais c'est vide : la chaine ansistring du receivetext est NULL.
    Alors que lors de la première communication les composants arrivent à communiquer entre eux.
    A un moment (là où ca commence à bugguer avec la chaine), je fais un sendtext puis juste apres j'essai de voir le text dans la socket il est nul.
    C'est normal?

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    euh juste une question avant qu'on entre dans certains détails :
    est ce que lorsque je fais SendText() en provenance du client, la socket sera directement envoyé au server? ou est ce qu'il faut appeler cet évènement manuellement?

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 69
    Points
    69
    Par défaut
    Ouais tu peux utiliser la fonction SendText ou tu veux par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm1::ButtonEnvoyerClick(TObject *Sender)
    {
      //Envoyer des données au serveur
      if(ClientSocket1->Active == true)  
        ClientSocket1->Socket->SendText("Test");
    }
    Franchement je vois pas pourquoi tu ne retrouves pas ce que tu envoies avec le serveur.

    Coter serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
          TCustomWinSocket *Socket)
    {
      ShowMessage("Client connecté");
    }
    void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
       ShowMessage(Socket->ReceiveText()); 
    }
    J'espère que ces quelques méthodes vont t'aider parce que la je vois pas ce qui cloche.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Non c'est pas un problème d'envoyer des infos du serveur c'est lorsque j'envoie des infos du client que ca ne marche pas.

    Bon on va faire autrement : est ce qu'il y a besoin dans une communication entre deux ordinateurs : d'un serveur sur un ordi et un client sur l'autre OU de un serveur et d'un client sur les deux ordis ?!

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Points : 69
    Points
    69
    Par défaut
    Non c'est bon tu peu mettre tes 2 applis sur le même pc pour faire tes tests.

    Tu passes 127.0.0.1 comme ip pour te connecter au serveur (par ex).
    Enfin si tu arrives à envoyer des données du serveur au client c'est que tu gères la connection .

    Le code que je t'ai mis pour le bouton envoyer dans mon message précédent c'était un ex pour envoyer des données au serveur.
    Normalement juste avec ce bout de code tu devrais recevoir Test sur ton serveur.

    Sinon c'est ptre ton pare feu qui bloque les échanges

Discussions similaires

  1. Problème dans les sockets Client Serveur Java
    Par rabah15 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 30/09/2014, 16h03
  2. problème de communication avec le OLE server
    Par Aleks_HL dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/10/2012, 19h18
  3. Web Services - Problème de communication serveur/client
    Par vern's dans le forum Web & réseau
    Réponses: 9
    Dernier message: 27/08/2007, 10h06
  4. Problème communication sockets serveur mutli-client
    Par muad'dib dans le forum Réseau
    Réponses: 5
    Dernier message: 17/05/2007, 02h21
  5. Problème de connection Socket Client
    Par xyz dans le forum Réseau
    Réponses: 27
    Dernier message: 12/04/2006, 15h13

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