1

我试图通过boost asio(没有序列化)向客户端发送kinect深度图是尝试异步还是同步更好(现在我的方法是同步):

像这样的smthg..

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;
4

1 回答 1

0

sizeof(pDepthMap)只是指针的大小,但您真正想要的是发送一些结构,而不是指向它的指针。

请看一下 ASIO序列化 示例,了解如何使用 Boost.Serialization 来完成。如果您不想使用 Boost.Serialization,您可以以某种专有方式自行“序列化”您的结构。

于 2012-11-04T11:34:22.780 回答