char buf[512] = { 0 };
int ret = recv(gSock, buf, 512, 0);
typedef struct _STRUCT {
int package;
int version;
char string[512];
} STRUCT, *PSTRUCT;
PSTRUCT ok;
ok = (PSTRUCT)buf;
我试图接受来自套接字的缓冲区(代码不在这里,但它正在工作)。它接受它并将其放入buf。然后我想将此buf转换为结构STRUCT。我希望前4个字节进入第一个成员,第二个4个字节进入第二个成员,然后剩下的数据进入最后一个成员。然而,这不像我预期的那样工作。我得到的奇怪的大数字不是我收到的。
我输入了1111111111(10),我得到的结果是;
package = 825307441
version = 825307441
string = 11\n
我对包裹号码进行了十进制到十六进制的转换,然后它返回'31313131',这是我的第一个4 1。所以我不确定为什么它会从整数变为十六进制回整数。我想要发送进入结构的确切内容。
您必须查看以下功能:
htonl,htons,ntohl,ntohs - 在主机和网络字节顺序之间转换值。