[英]rpc pointer not showing the right result
所以我試圖使用一些RPC函數。
基本上我想將2 2 * 2矩陣相乘,客戶端發送2個客戶端計算並發送的矩陣。
我的客戶收到的矩陣不是我發送的矩陣。
// server.c
matrice* multiply(matrice2 *m2)
{
matrice* res=&(matrice){.w=0.0,.x=0.0,.y=0.0,.z=0.0};
res->w=m2->m.w*m2->n.w+m2->m.x*m2->n.y; // ww'+xy'
res->x=m2->m.w*m2->n.x+m2->m.x*m2->n.z; // wx'+xz'
res->y=m2->m.y*m2->n.w+m2->m.z*m2->n.y; // yw'+zy'
res->z=m2->m.y*m2->n.x+m2->m.z+m2->n.z; // yx'+z'z
return res;
}
int main(void)
{
...
stat = registerrpc(PROGNUM, VERSNUM,PROCNUM, multiply, (xdrproc_t)xdr_matrice2, (xdrproc_t)xdr_matrice);
svc_run();
}
//client.c
int main (int argc, char **argv)
{
matrice m={1.0,2.0,3.0,4.0};
matrice n={9.0,8.0,7.0,6.0};
matrice2 donnees = {m , n};
stat = callrpc(host, PROGNUM, VERSNUM, PROCNUM, (xdrproc_t) xdr_matrice2, (char *)&donnees, (xdrproc_t)xdr_matrice, (char *)&res);
}
//include.h
typedef struct { double w; double x; double y; double z; } matrice;
typedef struct { matrice m; matrice n; } matrice2;
bool_t xdr_matrice(XDR *, matrice *);
bool_t xdr_matrice2(XDR *, matrice2 *);
//xdr_matrice.c
bool_t xdr_matrice(XDR *xdrs, matrice *m)
{
return xdr_double(xdrs,&(m->w)) && xdr_double(xdrs,&(m->x)) && xdr_double(xdrs,&(m->y)) && xdr_double(xdrs,&(m->z));
}
bool_t xdr_matrice2(XDR *xdrs, matrice2 *m2)
{
return xdr_matrice(xdrs,&(m2->m)) && xdr_matrice(xdrs,&(m2->n));
}
有人可以解釋一下為什么它無法正常工作或我犯了哪個錯誤嗎?
這真的很愚蠢,我只是將我的乘法函數更改為具有靜態res
(並且顯然是return &res
並更改為->
到.
),它確實有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.