在c中通过tcp socket发送struct

use*_*036 7 c sockets struct tcp

我有一个结构:

typedef     struct {
    char            *typ;
    cid_t           cid;
    unsigned short  nbytes;
    char            *data;
} req_s; 

typedef     struct {
    char            *ip;
    unsigned short  pid;
} cid_t;
Run Code Online (Sandbox Code Playgroud)

我想通过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)
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

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


小智 5

参见此处:通过C中的套接字传递结构。但是,在您的情况下,您的结构内部还具有指针,因此您也必须将这些指针的内容写入目标缓冲区。