Bonjour à tous. Voilà, j'ai un problème, je cherche à récupèrer mes valeurs x,y,z dans le main... je ne sais pas comment faire...
Quelqu'un peut-il m'aider ??
Merci par avance.
******************** Socket.cpp *******************
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <unistd.h>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include "Socket.h"
#include "Deplacement.h"
#define MAX_MSG 100 //longeur max de la trame
#define MSG_ARRAY_SIZE (MAX_MSG+3)// 3 caractères pour les codes ASCII 'cr', 'lf' et '\0'
using namespace std;
int listenSocket, i;
//unsigned short int listenPort=1501, msgLength;
socklen_t clientAddressLength;
struct sockaddr_in clientAddress, serverAddress;
char msg[MSG_ARRAY_SIZE];
float Ouverture_Socket()
{
unsigned short int listenPort=1501, msgLength;
//socklen_t clientAddressLength;
//struct sockaddr_in clientAddress, serverAddress;
//char msg[MSG_ARRAY_SIZE];
memset(msg, 0x0, MSG_ARRAY_SIZE); // Mise à zéro du tampon
listenSocket = socket(AF_INET, SOCK_DGRAM, 0);// Création de socket en écoute et attente des requêtes des clients
if (listenSocket < 0)
{
cerr << "Impossible de créer le socket en écoute\n";
exit(1);
}
// On relie le socket au port en écoute.
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = htonl(INADDR_ANY);
serverAddress.sin_port = htons(listenPort);
if (bind(listenSocket,(struct sockaddr *) &serverAddress,sizeof(serverAddress)) < 0)
{
cerr << "Impossible de lier le socket en écoute\n";
exit(1);
}
//*********** Attente des requêtes des clients *************
listen(listenSocket, 5);
cout << "Attente de requête sur le port " << listenPort << "\n";
}
float Reception_Trame()
{
clientAddressLength = sizeof(clientAddress);
memset(msg, 0x0, MSG_ARRAY_SIZE);// Mise à zéro du tampon de façon à connaître le délimiteur de fin de chaîne.
if (recvfrom(listenSocket, msg, MSG_ARRAY_SIZE, 0,(struct sockaddr *) &clientAddress,&clientAddressLength) < 0)
{
cerr << " Problème de réception du messsage\n";
exit(1);
}
//cout << " Depuis " << inet_ntoa(clientAddress.sin_addr);// Affichage de l'adresse IP du client.
//cout << ":" << ntohs(clientAddress.sin_port) << "\n";// Affichage du numéro de port du client.
cout << " Message recu : " << msg << "de "<<&clientAddress<<"\n";// Affichage de la ligne reçue
//***************** Recup Trame Cmd Manuelle ********************
char ASCIIx[3]={msg[0],msg[1]};
char ASCIIy[3]={msg[2],msg[3]};
char ASCIIz[3]={msg[4],msg[5]};
char ASCIIbroche[2]={msg[6],msg[7]};
float x,y,z;
float *dx,*dy,*dz;
x=atof(ASCIIx);
dx=&x;
cout<<"x: "<<x<<endl;
y=atof(ASCIIy);
dy=&y;
cout<<"y: "<<y<<endl;
z=atof(ASCIIz);
dz=&z;
cout<<"z: "<<z<<endl;
// Deplacement(x,y);
// AxeZ(&z);
return(*dx);
}