1
저는 수업이 매우 어리 석습니다. 이 클래스의 객체는 boost를 통해 asio를 사용하여 tcp를 통해 전송하려고합니다. 내 클래스 올바르게 boost 물건을 우정을 만들고 serialize 메서드를 구현합니다.C++ 채널에서 TCP 직렬화 된 객체를 강조 표시합니다. 양방향 통신이 작동하지 않습니다.
글쎄, 클라이언트가 서버에 연결하고 내 개체를 보낸 다음 서버가 같은 클래스의 다른 개체를 다시 보내길 원합니다. 서버에서
:
Data data;
int port = 2040;
boost::asio::io_service io_s;
tcp::acceptor data_acceptor(io_s, tcp::endpoint(tcp::v4(), port));
tcp::iostream data_stream;
Data data_recv;
data_acceptor.accept(*(data_stream.rdbuf())); /* Accepting */
boost::archive::binary_iarchive ia(data_stream);
ia >> data_recv;
boost::archive::binary_oarchive oa(data_stream); /* LINE Y */
oa << data; /* LINE X */
data_stream.close();
데이터 직렬화 클래스입니다
나는이 일을 시도했다. 클라이언트에서:
Data data_send;
Data data_recv;
tcp::iostream data_stream("127.0.0.1", "2040"); /* Creating TCP stream */
boost::archive::binary_oarchive oa(data_stream);
oa << data_send;
boost::archive::binary_iarchive ia(data_stream); /* LINE Q */
ia >> data_recv; /* Receive LINE W */
data_stream.close();
글쎄, 그것은 작동하지 않습니다. 그것은 어떻게 든 막는다.
문제는이 양방향 체계이기 때문에 골동품입니다. 선 Q, W, X, Y IT WORKS를 제거하면 !!! 이 문제를 해결하는 방법을 알고 계십니까?
클라이언트에 스트림에 플러시 호출 할 필요가? 거기에'data_recv' 만 보입니다. 나는 라인 X를 언급하고있다. – chrisaycock
그래, 미안하지만, 나는 실수로 복사하고있다. 나는 수정을 게시했다 ... – Andry
클라이언트가 라인 Q 또는 W를 막고 있는지 알고 있니? 서버와 비슷합니다. – chrisaycock