안녕하세요.Boost.Asio async_write/async_read - 프로그램이 제대로 통신하지 않습니다.
나는 boost :: asio를 사용하여 질문 - 답변 논리를 구현하려고합니다.
void Send_Message()
{
....
boost::asio::async_write(server_socket, boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Client::Handle_Write_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Write_Message(const boost::system::error_code& error)
{
....
std::cout << "Message was sent.\n";
....
boost::asio::async_read(server_socket_,boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Client::Handle_Read_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Read_Message(const boost::system::error_code& error)
{
....
std::cout << "I have a new message.\n";
....
}
를 서버에 나는이 "같은 - 논리"코드 : 클라이언트에
나는이 그냥 구조의void Read_Message()
{
....
boost::asio::async_read(client_socket, boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Server::Handle_Read_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Read_Message(const boost::system::error_code& error)
{
....
std::cout << "I have a new message.\n";
....
boost::asio::async_write(client_socket_,boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Server::Handle_Write_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Write_Message(const boost::system::error_code& error)
{
....
std::cout << "Message was sent back.\n";
....
}
메시지.
그리고 클라이언트의 출력은 다음과 같습니다 I have a new message.
그리고 그게 다야 : 서버에 Message was sent.
출력이다. 이 두 프로그램은 여전히 작동하지만 아무 일도 일어나지 않습니다. 내가 좋아하는 코드를 구현하기 위해 노력 :
if (!error)
{
....
}
else
{
// close sockets and etc.
}
을하지만 읽기 또는 쓰기에 오류가 없습니다. 두 프로그램 모두 정상적으로 실행되지만 서로 상호 작용하지 않습니다. 이 코드는 매우 분명하지만 작동하지 않는 이유를 이해할 수 없습니다.
미리 조언 해 주셔서 감사합니다.
io_service는 boost :: asio : boost :: thread t (boost :: bind (& boost :: asio :: io_service :: run, & io_service)) 예제와 같이 실행 중입니다. – Max