[Boost::Asio] Arrive pas a se connecter a un serveur sous boost

Arrive pas a se connecter a un serveur sous boost [Boost::Asio] - C++ - Programmation

Marsh Posté le 30-11-2010 à 11:32:13    

Bonjour,

 

je suis en train de coder un serveur sous Boost::asio... Le probleme c'est que je n'arrive pas a m'y connecter :/
en effet je me connecte avec telnet, mais il quitte instantanement!
je ne rentre jamais dans HandleRecvUDP();

 

Voici mon code :

 

serverbabel.cpp

Code :
  1. // serverbabel.cpp : Defines the entry point for the console application.
  2. #include "stdafx.h"
  3. #include "serverbabel.h"
  4. BabelServer::BabelServer(boost::asio::io_service &io, int port):_port(port), _socket(io, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port))
  5. {
  6. std::cout << "[+] Server listens on port [" << _port << "]" << std::endl;
  7. StartReceiveUDP();
  8. }
  9. void BabelServer::StartReceiveUDP()
  10. {
  11.     // Reception des donnees a travers UDP
  12.     _socket.async_receive_from(boost::asio::buffer(_recv_buffer), _remote_endpoint,
  13.         boost::bind(&BabelServer::HandleRecvUDP, this,
  14.         boost::asio::placeholders::error,
  15.         boost::asio::placeholders::bytes_transferred));
  16. }
  17. void BabelServer::HandleRecvUDP(const boost::system::error_code& error, std::size_t)
  18. {
  19.  if (!error || error == boost::asio::error::message_size)
  20.     {
  21.  // on definit un pointeur intelligent
  22.  boost::shared_ptr<std::string> message(new std::string("Hello les amigos!!!!" ));
  23.  // on envoie le message avec le handle
  24.  _socket.async_send_to(boost::asio::buffer(*message), _remote_endpoint,
  25.       boost::bind(&BabelServer::HandleSendUDP, this, message,
  26.       boost::asio::placeholders::error,
  27.       boost::asio::placeholders::bytes_transferred));
  28.  // on se remet en mode reception
  29.  StartReceiveUDP();
  30.     }
  31. }
  32. void BabelServer::HandleSendUDP(boost::shared_ptr<std::string>, const boost::system::error_code&, std::size_t)
  33. {
  34. }
  35. int _tmain(int argc, _TCHAR* argv[])
  36. {
  37. std::cout << "Welcome to Babel Server VOIP..." << std::endl;
  38. // On initialise le service boost::asio
  39. boost::asio::io_service io;
  40. // On transmet le service a la classe BabelServer qui va gerer toutes les connexions
  41. BabelServer server(io, 7171);
  42. // Une fois les taches asynchrones faites, on lance!
  43. io.run();
  44. return 0;
  45. }
 

Merci d'avance


Message édité par immikimaru le 30-11-2010 à 11:39:14

---------------
Mon Feed-Back  
Reply

Marsh Posté le 30-11-2010 à 11:32:13   

Reply

Marsh Posté le 30-11-2010 à 11:49:18    

C'est à dire que si tu fais de l'UDP, tu peux essayer longtemps avec telnet qui fait du TCP.

Reply

Marsh Posté le 30-11-2010 à 12:03:59    

oui je viens de me rendre compte de mon erreur....
j'ai donc fait un client vite fait pour tester , mais j'ai une autre erreur qui survient:

 
Citation :

Only one usage of each socket address (protocol/network address/port) is normally permitted

 

code du client.cpp

Code :
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <boost/array.hpp>
  4. #include <boost/asio.hpp>
  5. using boost::asio::ip::udp;
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8.   try
  9.   {
  10.     boost::asio::io_service io_service;
  11.     udp::endpoint endpoint(udp::v4(), 2222);
  12. udp::socket socket(io_service, endpoint);
  13.     socket.open(udp::v4());
  14.     boost::array<char, 1> send_buf  = { 0 };
  15.     socket.send_to(boost::asio::buffer(send_buf), endpoint);
  16.     boost::array<char, 128> recv_buf;
  17.     udp::endpoint sender_endpoint;
  18.     size_t len = socket.receive_from(
  19.         boost::asio::buffer(recv_buf), sender_endpoint);
  20.     std::cout.write(recv_buf.data(), len);
  21.   }
  22.   catch (std::exception& e)
  23.   {
  24.     std::cerr << e.what() << std::endl;
  25.   }
  26. system("PAUSE" );
  27.   return 0;
  28. }
 

Edit: bien sur j'ai change le port du serveur en 2222 :D


Message édité par immikimaru le 30-11-2010 à 12:05:52

---------------
Mon Feed-Back  
Reply

Marsh Posté le 30-11-2010 à 13:24:19    

en fait en faisant un netstat je ne listen sur aucun port , je en sais pas pourquoi :/


---------------
Mon Feed-Back  
Reply

Sujets relatifs:

Leave a Replay

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