【发布时间】:2014-04-29 16:41:29
【问题描述】:
我正在尝试使用套接字从客户端向服务器写入结构。
结构是:
typedef struct R
{
int a;
int b;
double c;
double d;
double result[4];
}R;
结构在 2 个程序(服务器、客户端)和 i malloc 中的结构相同。
客户端程序:
结构 R* r;
malloc..
...(用数据填充结构)
write(socket_fd,(void*)r,size of(R));
服务器程序:
结构 R* r;
malloc..
read(client_fd,(R*)r,size of(R));
这不是将结构从客户端传递到服务器..
如何通过socket将struct写入服务器??
【问题讨论】:
-
您显示的内容看起来不错,但是在通过套接字传输数据时,还有很多其他事情(您没有显示)可能会出错。
-
像什么?我尝试只发送 int 或 double 并且它正在工作......但结构不是
-
假设内存处理和套接字设置以及连接/接受正确完成,字节序和填充不是问题,然后仔细阅读 read()/write() 的文档并了解这两个函数(至少对于套接字)不一定读/写与他们被告知的一样多的字节,但很少。因此,围绕此类调用计数,直到所有预期的数据都已被读取/写入是一个好主意,而不是说必不可少的必要性。