Hello,

Je suis actuellement en train de developper un serveur tcp avec boost asio et vs2010 sur win7.
ma classe Server:

fichier Header:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class Server
{
 private:
        boost::asio::io_service &_io;
        boost::asio::ip::tcp::acceptor *acceptor;
        bool                connected;
        boost::asio::ip::tcp::socket *_client;
};
fichier Source:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Server::Server(boost::asio::io_service& io) : _io(io)
{
  connected = false;
}
 
void                Server::receiving()
{
        boost::system::error_code error;
        acceptor = new tcp::acceptor(_io, tcp::endpoint(tcp::v4(), 14242));
        _client = new tcp::socket(_io);
        connected = false;
        try {
                acceptor->async_accept(*_client, boost::bind(&Server::handle_accept, this, boost::asio::placeholders::error));
        } catch(...) {
        }
}
 
void                Server::handle_accept(const boost::system::error_code& error)
{
// problem appears here
}
J'appel io.run() dans le main.
De plus, j'utilise boost asio en tant que client tcp dans une autre classe, avec le meme io_service, et ca fonctionne.
Lorsqu'un client se connecte a ce serveur, handle_accept est appele. Erreur dispose des valeurs suivantes:

m_val = 1;
m_cat = 0x00ab8d00 instance;
| [boost::asio::error::detail::misc_category] = {...}
| boost::noncopyable_::noncopyable = {...}
| __vfptr = 0x00a8bf18 const boost::asio::error::detail::misc_category::`vftable'
| [0] = 0x0098aaaa boost::asio::error::detail::misc_category::`scalar deleting destructor'(unsigned int)
| [1] = 0x0098b4e1 boost::asio::error::detail::misc_category::name(void)
| [2] = 0x0098b603 boost::asio::error::detail::misc_category::message(int)
| [3] = 0x0098e39e boost::system::error_category::default_error_condition(int)
| [4] = 0x0098bef0 boost::system::error_category::equivalent(class boost::system::error_code const &,int)
| [5] = 0x0098cb61 boost::system::error_category::equivalent(int,class boost::system::error_condition const &)

Quelqu'un peut il m'expliquer ce que cela signifie?
Pouvez-vous m'aider a resoudre ce soucis?
Merci !


Cyprien DIOT
France