我有一个结构:
typedef struct {
char *typ;
cid_t cid;
unsigned short nbytes;
char *data;
} req_s;
typedef struct {
char *ip;
unsigned short pid;
} cid_t;
我希望通过tcp套接字发送它。那可能吗?我用它完成了:
req_s answer;
...
if( send(sock, (void*)&answer, sizeof(answer),0) < 0 ) {
printf("send failed!\n");
}
...
recv ( socketDesc, (void*)&answer, sizeof(answer), 0) >= 0)
但如果我想读取溃败我的结构答案我只会得到一些象形文字
还是有更好的方法将我的数据从客户端发送到服务器并返回?
答案 0 :(得分:5)
见这里:Passing a structure through Sockets in C。 但是,在您的情况下,您还有指向结构的指针,所以你 还必须将这些指针的内容写入目标缓冲区。
答案 1 :(得分:4)
通过网络连接发送指针通常不会起作用,因为它们指向的数据不会被复制,即使它可能位于不同的内存地址。 您需要序列化结构以通过网络连接发送它们。