[Boost::asio] Acces a des donnees bas niveau

Acces a des donnees bas niveau [Boost::asio] - C++ - Programmation

Marsh Posté le 27-09-2009 à 15:16:24    

Bonjour ! J'ai ecris un mini serveur UDP (a partir de la doc asio hein ;-) ), qui recoit des informations depuis une carte wifi connectee a un routeur en ipv6. Bref, ca marche, je recois le payload de chaque paquet, ca c'est tres cool  :love:
Cependant, j'aurai besoin de recuperer pour chaque paquet l'adresse MAC de la source : or, boost n'a pas d'interface directe pour cela il semblerait, mais la solution se situe peut etre dans boostt::asio::socket avec la methode native.

 

J'ai quand meme de la difficulte a savoir ce que je recupere exactement : quel type declarer ? Une socket unix (je suis sous linux ) ? Donc je perd la portabilite ?

 

Si vous avez une solution directe vers ce dont j'ai besoin (adresse mac pour chaque paquet) je suis preneur !

 

Mon serveur (partie qui travaille )

 
Code :
  1. udp::socket socket(io_service, udp::endpoint(udp::v6(), m_port));
  2.     for (;;)
  3.     {
  4.       boost::array<char, PAYLOAD_SIZE> recv_buf;
  5.       udp::endpoint remote_endpoint;
  6.       boost::system::error_code error;
  7.       socket.receive_from(boost::asio::buffer(recv_buf),
  8.           remote_endpoint, 0, error);
  9.       if (error && error != boost::asio::error::message_size)
  10.         throw boost::system::system_error(error);
  11.       //processBuffer( recv_buf );
  12.       for( boost::array<char,PAYLOAD_SIZE>::const_iterator it=recv_buf.begin();
  13.             it < recv_buf.end(); ++it)
  14.       {
  15.         cout<<int(*it)<<endl;
  16.       }
  17.       cout<<"End buffer"<<endl<<endl;
  18. }


Message édité par guepe le 27-09-2009 à 15:16:53

---------------
Un blog qu'il est bien
Reply

Marsh Posté le 27-09-2009 à 15:16:24   

Reply

Marsh Posté le 28-09-2009 à 09:41:39    

je crois que les aprties os specific non facilement interfacable de manière portable n'ont pas de support dans asio. reste donc à faire un truc moche à base de #define autour du code incriminé que je te conseille de cacher dans une fonction à part.

Reply

Marsh Posté le 28-09-2009 à 13:42:21    

Tu veut dire que je devrais faire le support multiplateforme de cette section (recuperer l'adresse MAC) moi meme avec des #ifdef pour chaque plateforme ?
 
Merci... cependant, je ne vois pas du tout par ou aller, a part que je _pense_ que les informations sont certainement dans la socket ? Aurait-tu un cours example de recuperation de la socket native depuis une socket asio ?
 
Je te remercie :-)


---------------
Un blog qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed