asio를 사용하는 데 문제가 있습니다. 내 클라이언트/서버 응용 프로그램은 동기식 통신 만 필요합니다. 그래서 부스트 홈페이지의 싱크로 예제를 사용하여 데이터를 보내고받는 두 가지 절차를 설정했습니다. 코드는 다음과 같습니다.Boost.Asio 동기식 통신
이 절차는 부스트 예제에서 추출한 코드 줄에 대한 래퍼입니다. 내 테스트 응용 프로그램에서
, 클라이언트는
std::string szDate;
vReceive(socket, szDate);
vSend(socket, std::string("Chop Suey!"));
vReceive(socket, szDate);
vSend(socket, std::string("Halo"));
호출하고 서버는
std::string message = make_daytime_string();
std::string szReceived;
vSend(socket, message);
vReceive(socket, szReceived);
vSend(socket, message);
vReceive(socket, szReceived);
그냥 기능을 테스트하기 위해 호출합니다. 문제는 첫 번째 정보 교환 후에 두 응용 프로그램이 모두 멈추는 것입니다. 이는 다음과 같이 표현했습니다 :
picture.
클라이언트 측의 vReceive() 프로 시저가 완료되지 않았습니다.
vSend()이 서버 측에서 완료됩니다. 그래서, 아무도 어떤 생각을 가지고 있습니까? 무엇이 잘못 될 수 있습니까?
누군가가 문제를 복제하기를 원한다면 원본 소스를 동일한 서버에 업로드했습니다.이 서버의 그림은 asio_problem.rar 파일에 있습니다 (새 회원으로 게시물 당 하나의 하이퍼 링크가있을 수 있습니다).
미리 감사드립니다. 다니엘.