Bonjour à tous, je sollicite à nouveau votre aide suite à un problème de traitement de caractères...
Je reçoit une trame (par le biais de sockets) et souhaiterai suivant le premier caractère de la trame agir de différentes manières. Le problème est que celà ne fonctionne pas comme je le souhaite, ne sachant pas d'où vient le problème, j'aimerais l'avis d'experts... ^^
Je n'entre pas dans le If 3 mais je ne sais pas pourquoi.
J'ai tenté avec des case le pb est le même.
Merci d'avance.
#include <unistd.h> //setuid()
#include <iostream>
#include <sys/io.h> // Bibliothèque d'accès paramètres systèmes.
#include <cstdlib> // Pour utiliser la fonct system
#include "Socket.h"
#include <sstream>
using namespace std;
#define port 3501 //definition du port par defaut
/************* Fontion Principale *****************/
int main()
{
system("clear"); // Accès système au terminal
system("echo Connexion en tant que $USER"); // Permet de montrer la connexion en Root
char* Trame;
my_socket mon_port(port); // on crée le Socket mon_port
std::cout<<"\nOuverture du Port"<<port<<" \n";
while(1)
{
cout<<"\n*****Attente d'un nouveau client*********\n";
mon_port.s_accept(); //Attente du client
while(1)
{
std::string trame=mon_port.rcv(); // recpetion de la trame
std::cout<<"trame : *"<<trame<<"*"<<std::endl;
std::stringstream buff;
float cmd, x, y, z, broche;
buff << trame;
buff >> cmd >> x >> y >> z >> broche;
std::cout<<"Variables : "<< cmd <<"*"<< x <<"*"<< y <<"*"<<z<<"*"<<"*"<<broche<<"*"<<std::endl;
if(cmd==0) //Deconnexion du client
{
cout<<"\n Deconnexion du client ! \n";
break;
}
if(cmd==1) //Pour la Commande Manuelle
{
cout<<"Commande Manuelle : "<<x<<" "<<y<<" "<<z<<" "<<broche<<endl;
}
if(cmd==2)
{
cout<<"Dans If 2\n";
}
if(cmd==3)
{
cout<<"Dans If 3...";
}
}
}
}