【发布时间】:2014-09-02 09:39:18
【问题描述】:
我有一个结构:
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)
但如果我想阅读我的结构答案,我只会得到一些象形文字
或者有没有更好的方法将我的数据从客户端发送到服务器并返回?
【问题讨论】:
-
你可以发送一个结构体,但是由于你有
char *类型,你的字符串不会自动发送,但是字符串的地址,是的。 -
大端与小端?
-
不要使用结构体作为网络协议。使用网络协议作为网络协议。以八位字节设计您的协议,并为自己编写一个库来发送和接收它。或者使用现有的,例如 DML、XDR、... 使用 structs 会引入至少六个您甚至可能不知道的依赖项,并会导致类似这样的进一步问题。