我正在为一个机器人编码,我需要在我的计算机中运行所有机器人的数据,以便进行调试。我写了一个名为debug provider的类,它有这个责任。这是我为这堂课写的代码:
void
DebugProvider::doWork()
{
boost::asio::io_service io_service;
tcp::endpoint endpoint(tcp::v4(), 10001);
tcp::acceptor acceptor(io_service, endpoint);
tcp::iostream stream;
boost::system::error_code error;
acceptor.accept(*stream.rdbuf(), error);
if(!error)
{
boost::archive::binary_oarchive oa(stream);
oa << dataProvider;
}
usleep(50);
}
doWork方法在boost :: thread中每50us调用一次,DataProvider包含机器人中的所有数据(如相机图像,关节位置等)。
我还写了一个简单的客户端,它从机器人获取数据并在我的笔记本电脑中显示相机图像。 (因为我正在测试代码,它只获取数据一次)。
int main(int argc, char *argv[])
{
DataProvider dp;
tcp::iostream stream("10.1.1.1", "10001");
boost::archive::binary_iarchive ia(stream);
ia >> dp;
Mat mat = dp.getCameraImage();
imshow("camera", mat);
waitKey();
return 0;
}
我的问题是在机器人和计算机上运行程序之后。两个程序都抛出一个stream_error。
我尝试使用telnet从服务器获取数据并且一切正常但是使用boost :: asio :: ip :: tcp会引发所描述的错误。