Async_write отправляет только после закрытия сервера ⇐ C++
-
Anonymous
Async_write отправляет только после закрытия сервера
I'm trying to send messages via async_write, but they are only sent after I shutdown the server ( ctrl-c)
For example: as client I send "test" and "test2", and only after closing the server client recieves "testtest2"
I'm making a chat that accepts a message from a user (successfully) and has to broadcast it to everyone
message sending code
void Server::writeHandler(int id, boost::system::error_code error){ if (!error){ std::cout socket, asio::buffer(msg, msg.size()), std::bind(&Server::writeHandler, this, user.first, std::placeholders::_1)); } } broadcast calls in onMessage
void Server::onMessage(int id, boost::system::error_code error){ if (!error){ broadcast(m_read_msg, error); // char m_read_msg[PACK_SIZE] // PACK_SIZE = 512 asio::async_read(m_users[id].get()->socket, asio::buffer(m_read_msg, PACK_SIZE), // PACK_SIZE = 512 std::bind(&Server::onMessage, this, id, std::placeholders::_1)); } else { close_connection(id); } } server run function:
void Server::run(int port){ asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), port); std::cout
Источник: https://stackoverflow.com/questions/780 ... -is-closed
I'm trying to send messages via async_write, but they are only sent after I shutdown the server ( ctrl-c)
For example: as client I send "test" and "test2", and only after closing the server client recieves "testtest2"
I'm making a chat that accepts a message from a user (successfully) and has to broadcast it to everyone
message sending code
void Server::writeHandler(int id, boost::system::error_code error){ if (!error){ std::cout socket, asio::buffer(msg, msg.size()), std::bind(&Server::writeHandler, this, user.first, std::placeholders::_1)); } } broadcast calls in onMessage
void Server::onMessage(int id, boost::system::error_code error){ if (!error){ broadcast(m_read_msg, error); // char m_read_msg[PACK_SIZE] // PACK_SIZE = 512 asio::async_read(m_users[id].get()->socket, asio::buffer(m_read_msg, PACK_SIZE), // PACK_SIZE = 512 std::bind(&Server::onMessage, this, id, std::placeholders::_1)); } else { close_connection(id); } } server run function:
void Server::run(int port){ asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), port); std::cout
Источник: https://stackoverflow.com/questions/780 ... -is-closed
Мобильная версия