gpt4 book ai didi

c - 在 Linux 中使用 C 通过套接字发送 XDR 结构

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:14 26 4
gpt4 key购买 nike

我正在编写一个通过套接字发送 XDR 结构的服务器。使用 Wireshark,我看到我的客户端正确地向服务器发送了一条 XDR 消息,但我没有看到任何数据从服务器发送到客户端。但是代码似乎是正确的,因为它与客户端使用的相同。我已经看到问题出在 xdr_Response。上面有没有错误?感谢大家

XDR xdrs_w;
Response y;

stream_socket_w = fdopen(s, "w");
xdrstdio_create(&xdrs_w, stream_socket_w, XDR_ENCODE);

y.error = 0;
y.result = 5.7;

xdr_Response(&xdrs_w, &y);
fflush(stream_socket_w);

与:

struct Response {
bool_t error;
float result;
};
typedef struct Response Response;

最佳答案

我不是 XDR 的专家,但我找到了一种通过套接字连接(在 TCP 上)从 XDR 接收数据的方法。首先,您必须执行 recv 以从您的客户端接收数据,然后调用 xdrmem_create(),这需要您将用于读取的 XDR 结构、缓冲区(字符串)、返回recv() 的值,并且您必须使用 XDR_DECODE,因为您是从经过编码的 XDR 写入的。

你必须这样写:

l = recv(socket, buffer, BUFFERDIM, 0);
xdrmem_create(&xdrs_w, buff, l, XDR_DECODE );
if(!xdr_Response(&xdrs_w, &y) {
fprintf(stdout, "Error XDR\n");
}
fprintf(stdout, "Received: %f", y.result);

y需要填写。注意bufferbuff是不同的。我更喜欢这样做而不是使用 fd_open,您只需创建 xdr 并调用 xdr_Response

关于c - 在 Linux 中使用 C 通过套接字发送 XDR 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com