#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);
}
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
baptchr55
Messages postés34Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention 6 avril 2011 15 févr. 2011 à 13:03
Bonjour, merci de ton attention et surtout de la réponse apportée. En effet ta méthode par pointeurs ou référence me plait beaucoup et je vais m'en servir. Par contre la dernière n'est absolument pas à ma portée. je ne maitrise pas ce point.
J'ai avant ta réponse pu réussir en contournant la difficulté (mais en trichant un peut) j'ai retourné via la fonction, la variable "msg" pour ne la traiter que par la suite dans le main.
Ceci dit les pointeurs semblent quand même beaucoup plus professionnel ;-)