Les gars J'ai vraiment besoin de votre aide. J'apprends boost::asio
et j'ai 2 problèmes que je ne peux pas traiter pendant des jours ...boost :: serveur asio avec des fonctions simples
Voici un exemple d'un serveur simple écho fait par moi-même:
int main(
{
// crate a server, binding it and listening connections
// acceptor server;
//socket client
server.async_accept(client, boost::bind(accept_handle, _1, &server, &client));
io_service.run();
return 0;
}
void accept_handle(const boost::system::error_code& eCode, boost::asio::ip::tcp::acceptor* server, boost::asio::ip::tcp::socket* client)
{
char data[43];
client->async_read_some(boost::asio::buffer(data, 20), boost::bind(read_handle, _1, _2, server, client));
}
void read_handle(const boost::system::error_code& eCode, size_t bytes)
{
char data_buf[20] = "hello";
client->async_write_some(boost::buufer(data, 5), boost::bind(write_handle, _1, _2, server, client));
}
void write_accept(const boost::system::error_code& eCode, size_t bytes)
{
boost::asio::ip::tcp::socket newConnection(server->get_ioservice)); // taking he io_service of the server
server->async_accept(newConnection, boost::bind(accept_handle, _1, server, client));
}
Le problème est le serveur accepter un client et n'accepte pas d'autre client en attente .. où est-ce que je fais mal ici
NOTE: J'ai écrit ce code dans le bloc-notes donc désolé pour les erreurs de syntaxe s'il y en a.
Merci pour votre aide à l'avance !!!
Vous devez l'appeler à nouveau dans votre fonction 'accept_handle'. –
Copie possible de [Comment créer un serveur boost capable de gérer plusieurs clients en même temps?] (Https://stackoverflow.com/questions/31579362/how-do-i-create-a-boost-server-that- can-handle-multiple-clients-at-once) –
Richard Hodges vous voulez dire que j'ai besoin d'appeler mon accept_handle pour accepter une autre connexion au moment où le serveur lit un client mais pourquoi est-il faux d'appeler async_handle from write_handle ??? –