begin process at 2012 05 29 23:10:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Réseau & Internet

 > 

Lecture grace au socket -- Erreur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lecture grace au socket -- Erreur

jeudi 12 novembre 2009 à 19:38:05 | Lecture grace au socket -- Erreur

megamario

Bonjour j'ai un petit problème avec une appli que l'on doit fait au lycée, un mini chat.

Le voudrais que lorsque l'on appuis sur un bouton connexion cela se connecte au serveur, que cela demande si le login est libre, et demande la liste des login connecter.

Voila ce que j'ai fait:
Je suis sous C++Builder6
Code C/C++ :
void __fastcall TForm1::ButtonConnexionClick(TObject *Sender)
{

        AnsiString Envoi;
        AnsiString LaLigne ="";
        Connexion();

        Sleep(100);
        do
        {
        LaLigne = ClientSocket1 ->Socket ->ReceiveText();
        }while((!SauvegardeLigne(LaLigne)) && LaLigne == NULL);
        if (TraitementLigne())
        {
                ClientSocket1 ->Socket ->SendText(Envoi.sprintf("%d%s%d",'L',EditLogin ->Text,'\x04' ) );
                Sleep(100);
                do
                {
                        LaLigne = ClientSocket1 ->Socket ->ReceiveText();
                }while((!SauvegardeLigne(LaLigne)) && LaLigne =="");
                if (TraitementLigne())
                {
                        ClientSocket1 ->Socket ->SendText(Envoi.sprintf("%d%d",'*','\x04') );
                        Sleep(100);
                        do
                        {
                                LaLigne = ClientSocket1 ->Socket ->ReceiveText();
                        }while((!SauvegardeLigne(LaLigne)) && LaLigne =="");
                        if (TraitementLigne())
                        {
                                //
                        }
                        else
                        {
                                ListBoxMessage ->Items -> Add("Erreur de reception des login");
                                Deconnexion();
                        }
                }
        }
        else
        {
                ListBoxMessage ->Items -> Add("Reception imcomplette");
                Deconnexion();
        }
}
void TForm1::Deconnexion()
{
        ButtonConnexion->Enabled = true;
        EditIP->Enabled  = true;
        EditPort->Enabled = true;
        EditLogin->Enabled = true;
        ButtonDeconnexion->Enabled = false;
        ClientSocket1 ->Active = true;
}
void TForm1::Connexion()
{
        ButtonConnexion->Enabled = false;
        EditIP->Enabled  = false;
        EditPort->Enabled = false;
        EditLogin->Enabled = false;
        ButtonDeconnexion->Enabled = true;
        ClientSocket1 ->Address = EditIP ->Text ;
        ClientSocket1 ->Port = EditPort ->Text.ToInt() ;
        ClientSocket1 ->Active = true;
}
bool TForm1::SauvegardeLigne(AnsiString LaLigne)
{
        int Nb = LaLigne.Length() ;
        if (LaLigne.SubString(Nb-1,1)== '\x04')
        {
                Ligne += LaLigne;
                return true;
        }
        else
                Ligne += LaLigne;
                return false;
}

bool TForm1::TraitementLigne()
{
        int Nb = Ligne.Length();
        AnsiString Car = Ligne.SubString(1,1);
        if (Car == 'C')
        {
                ListBoxMessage ->Items-> Add("Connecter");
                return true;
        }
        if (Car == '0')
        {
                ListBoxMessage ->Items->Add("Login accepté");
                return true;
        }
        if (Car == '1')
        {
                ListBoxMessage->Items -> Add("Login deja existant, veuillez en changer");
                ListBoxMessage->Items -> Add("Deconnexion");
                Deconnexion();
                return false;
        }
}
 


Mon problème c'est qu'a la ligne :
LaLigne = ClientSocket1 ->Socket ->ReceiveText();
Je reçois rien du tout,

J''ai peut être encore des prob de gestion des booléens, mais c'est pas le problème.
Le serveur me connecte bien et lors de la connexion accepter il me revoie la ligne
'C''\x04' Le caractère C plus EOT.

Au lycée j'ai réussi cela marche mais en utilisant l'évènement de réception. Mais a moins de gérer le tout avec des sémaphore il me faut un bouton pour se connecter un autre pour se loger et un autre pour la liste des connecter. je voulais éviter sa pour la connexion. Puis après utilisé l'évènement, la j'aurais pas le choix pour la réception des messages.

Merci de votre aide pour comprendre mon erreur

Technicien en électricité industriel (39 ans). En cours de reconversion par un BTS IRIS 2éme année.Actuellement en cours.
jeudi 12 novembre 2009 à 21:08:27 | Re : Lecture grace au socket -- Erreur

goodboy21

salut,
utilise receivebuf à la place de receivetext, car toutes tes données sont séparées par EOT et non par \n et c'est en ce sens que receivetext te renvoie des données de taille aléatoire car il ne trouve pas le marqueur de fin de chaîne.
le soucis avec receivebuf c'est que tu devra trouver toi-même ton marqueur de fin de transmition et le transtyper le contenu en ansistring.
bon courage....
jeudi 12 novembre 2009 à 22:22:55 | Re : Lecture grace au socket -- Erreur

megamario


J'ai essayer avec receivebuf au lycée mais j'ai pas compris comment l'utilisé car effectivement vous me dite qu'il faut le transtyper mais je vois pas exactement ce qu'il faut faire.
receivebuf attendant un (void* buff ,int)
L'int j'ai compris que c'est le nombre de caractère a récupérer. Mais le void* je vois pas comment le traité.

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 2éme année.Actuellement en stage dans mon entreprise en R&D.


Cette discussion est classée dans : true, socket, enabled, clientsocket1, laligne


Répondre à ce message

Sujets en rapport avec ce message

C++ Builder: Client irc (a laide!) [ par Psyc0s ] Bon je suis en train de faire un client irc avec C++ builder Mais le socket ne veux pas envoyer les message au serveur:(La connexion au serveur foncti Connexion a irc.voila.fr [ par Globox60 ] Bonjour a tous,Je prog sous builder, et je cherche a me faire un client irc avec. Le pb est la clé d' acces de orange.J utilise ce code :ClientSocket1 chat client server [ par electroonn ] Bonjour, j'essaye de developper avec c++ une application de chat (client-server) sous windows, en voici le code:Server server; Client client; void m Problème d'IP Client avec les winsock [ par Cphil51 ] Boujour a tous.Je m'interesse en ce moment aux socket sous windows et j'ai un petit probleme actuellement. J'aimerais savoir comment récupérer l'IP d' C'est quoi Raw Socket? [ par yggy ] bonjour c'est quoi raw socket?et comment envoyer des données sans protocole?______Yggy http://yggy.ifrance.com Raw Socket pour ICMP C++ [ par vdougnac ] Bonjour,Je souhaiterai realiser un programme en C++ qui permet d'envoyer des paquets ICMP, notament pour faire un ping.Je sais qu'il faut utiliser le problème de socket de communication bluetooth sous visual c++ [ par mrbozzo ] Bonjour à tous!Voilà, je recherche un code de communication bluetooth, qui accepte tout périphérique.Je vous transmet mon code :<meta name="Generator" WSAEventSelect, deux appels [ par NaeiKinDus ] Bonjour tout le monde :)Je planche actuellement sur la creation d'un serveur web en c++ mais je rencontre un soucis.J'ai un WSASelectEvent (situe au n Erreur de segmentation d'un simple client http sous linux !! [ par nassimatique ] #include #include #include #include #include #include #include #define TAILLE 4096 <b Requetes serveur cs 1.6 [ par Mini92 ] En fait, j'essaye d'envoyer des requêtes sur mon serveur cs mais je n'obtiens aucun retour.Voilà le code si quelqu'un peu m'aider svp#include #include


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales