0
我在C++中使用接口定义语言和远程过程调用编写服务器和客户端。我可以使用[in]属性将数据从客户端发送到服务器。现在我想要服务器将数据发送回客户端。但是我没有收到正确的数据。远程过程调用和MIDL:如何使用[out]属性实现函数?
予定义的.idl接口功能如下:
[
//uuid and verison define here
]
interface utility{
void sendData([in] int numIn, [out] int *numOut);
}
的MIDL文件说,
一个[out]假定-only参数为未定义当远程过程是所谓的对象和内存是由服务器分配的。
所以在client.cpp中,我实例化变量并调用函数。
RpcTryExcept{
int *num;
sendData(hBinding, 123, num);
}
在server.cpp,
void sendData(handle_t IDL_handle, int numIn, int *numOut){
numOut = new int[3];
numOut[0] = 1;
numOut[1] = 2;
numOut[2] = 3;
}
我印刷在客户端中的int数组,并得到3张随机数。我也试着先定义客户端的大小。 int *num = new int[3]
。这一次它可以将numOut [0]的值传递给客户端,但其他索引全部搞砸了。我尝试了char数组,但没有好处。也许我误解了一些东西。任何人都可以给我一些想法吗?谢谢。
谢谢,它的工作原理。现在我有点困惑。当服务器向客户端发送一个int数组或float数组(我读取文件到float数组)时,它可以在IDL中使用float *或float []。但是,当客户端发送数据到服务器时,它显示不同的行为。我会尽力弄清楚。 – tianhuaf