我有一个班级,一个非常愚蠢的班级。此类的对象,我想通过 tcp 使用 asio by boost 发送它们。我的班级正确地与提升的东西建立了友谊并实现了方法序列化......
好吧,我希望客户端连接到服务器,将我的对象发送给它,然后服务器发回同一类的另一个对象。
我试图这样做:
在服务器中:
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 它工作!你知道如何解决这个问题吗?