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
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 :
- udp::socket socket(io_service, udp::endpoint(udp::v6(), m_port));
- for (;;)
- {
- boost::array<char, PAYLOAD_SIZE> recv_buf;
- udp::endpoint remote_endpoint;
- boost::system::error_code error;
- socket.receive_from(boost::asio::buffer(recv_buf),
- remote_endpoint, 0, error);
- if (error && error != boost::asio::error::message_size)
- throw boost::system::system_error(error);
- //processBuffer( recv_buf );
- for( boost::array<char,PAYLOAD_SIZE>::const_iterator it=recv_buf.begin();
- it < recv_buf.end(); ++it)
- {
- cout<<int(*it)<<endl;
- }
- cout<<"End buffer"<<endl<<endl;
- }
|
Message édité par guepe le 27-09-2009 à 15:16:53
---------------
Un blog qu'il est bien