我试图通过boost asio将kinect深度图发送给客户端(不进行序列化)
尝试异步还是同步(现在我的方法是同步)是否更好:
像这样
server:
//depthmap
const XnDepthPixel* pDepthMap = depth.GetDepthMap();
boost::asio::write (socket, boost::asio::buffer (pDepthMap, sizeof(pDepthMap))); //sizeof isnt right..
client:
XnDepthPixel* depth;
socket.read_some( boost::asio::buffer (&depth, sizeof(XnDepthPixel)* ?? )); //send sizeof(pDepthMap) before..
编辑:
XnDepthPixel的定义(也来自OpenNI):
/** Defines the depth values type (16-bit values). **/
typedef XnUInt16 XnDepthPixel
和XnUInt16:
/** 16-bit unsigned integer. */
typedef unsigned short XnUInt16;
最佳答案
sizeof(pDepthMap)
只是指针的大小,但是您真正想要的是发送某种结构,而不是指向它的指针。
请查看ASIO序列化example,以了解如何使用Boost.Serialization完成它。
如果您不想使用Boost.Serialization,则可以以某种专有方式通过自己的方法“序列化”您的结构。
关于c++ - 如何通过boost asio发送OpenNI深度图到客户端?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13181528/