问题:在Solaris RPC中,我从服务器返回一个struct我已经声明它是静态的。
但在客户机中,有些值是00,而不是值。我正在打印之前的值
服务器回拨,没问题。
但同样的打印语句在客户机中给出了垃圾值。

    struct enc_request{
            int enc_len;
            unsigned char enc_msg[700];
    };

    in server proc:
    static enc_reply reply_e;
    return (&reply_e);

谁能告诉我出了什么事吗。
输出:
原始回复发送
114 105 107 104 051 089 076 069 097 083 051 100 053 078 066 054 109 106 077 055 102 056 114 043 121 103 068 103 073 115 109 043 087 108 111 080 118 052 110 080 114 047 065 104 097 051 084 080 102 065 054 080 114 073 116 106 084 084 110 109 088 076 116 110 070 087 105 043 111 074 052 066 120 098 116 107 047 104089 115 080 097 119 097 111 103 043
收到的答复
114 105 107 104 051 089 076 069 097 083 051 100 053 078 066 054 109 106 077 055 102 056 114 043 121 103 068 103 073 115 109 043 087 108 111 080 118 052 110 080 114 047 065 104 097 051 084 068 080 102 065 054 080 114 073 116 106 084 110 109 088 076 116 110 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 000 000 000 000 000

最佳答案

我不知道整个情况,但是当生成和接收RPC请求时,数据的大小可能不正确,产生零。服务器和客户机上是否都有标准化struct enc_reply大小的机制?我见过类似的情况,32位系统将数据发送到64位,并使用sizeof()来确定结构的大小,从而在不同的体系结构中产生不可预测的结果。

09-05 16:41