在c中通过tcp socket发送struct

时间:2014-07-11 17:21:18

标签: c sockets tcp struct

我有一个结构:

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)

但如果我想读取溃败我的结构答案我只会得到一些象形文字

还是有更好的方法将我的数据从客户端发送到服务器并返回?

2 个答案:

答案 0 :(得分:5)

见这里:Passing a structure through Sockets in C。 但是,在您的情况下,您还有指向结构的指针,所以你 还必须将这些指针的内容写入目标缓冲区。

答案 1 :(得分:4)

通过网络连接发送指针通常不会起作用,因为它们指向的数据不会被复制,即使它可能位于不同的内存地址。 您需要序列化结构以通过网络连接发送它们。