1
我有一個類,一個非常愚蠢的類。這個類的對象,我想通過tcp使用asio通過boost來發送它們。我的班正確地與助推器的友誼,並實現方法序列化...C++ Boost 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它工作! 你知道如何解決這個問題嗎?
凡`data`服務器中定義?我只在那裏看到`data_recv`。我指的是X. – chrisaycock 2010-12-07 21:50:15