gpt4 book ai didi

c - 读/写结构到套接字

转载 作者:行者123 更新时间:2023-12-03 11:52:06 27 4
gpt4 key购买 nike

我正在尝试从客户端将结构写入带有套接字的服务器。

结构是:

typedef struct R
{
int a;
int b;
double c;
double d;
double result[4];
}R;

在两个程序(服务器,客户端)上,该结构是相同的,在这两个程序中,我为该结构分配了malloc。

客户端程序:

结构R * r;

malloc ..

...(用数据填充结构)

写(socket_fd,(void *)r,(R)的大小);

服务器程序:

结构R * r;

malloc ..

读取(client_fd,(R *)r,(R)的大小);

这不是将结构从客户端传递到服务器。

如何通过套接字将结构写入服务器?

最佳答案

网络编程的一些基本元素是:

  • 一个读或写调用可能不会写出您打算写入的总字节数
    读/写。检查通话的返回值。它会返回数字
    读取/写入的字节数。如果写入的字节较少,则应
    循环调用write直到所有数据都被写入。同样适用
    读书。
  • 机器的耐久性也很重要。如果您写了一个int
    小端(例如x86),在网络上传输时会转换为
    大端值。您需要在POSIX中使用apit之类的API,例如 htons ntohs
    容纳那个。

  • 这些只是起点,但是最可能的原因是数据没有按您期望的形式到达目的地。

    关于c - 读/写结构到套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23370507/

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