我正在使用 TCP 套接字。我正在使用 write 函数将数据发送到打开的套接字。
写(Socket_Fd,“测试”,4);
这样可行。但是当我这样做时。
#include <stdio.h>
#include <stdlib.h>
typedef unsigned char BYTE;
typedef struct LANC
{
BYTE START;
BYTE END;
} LCODE;
int main(int argc, char *argv[]){
LCODE COMMAND;
COMMAND.START = 0x28;
COMMAND.END = 0x06;
short value = (COMMAND.START << 8) | COMMAND.END;
write(socket_FD, value, sizeof(value);
return 0;
}
当我检查值的大小时,我得到了 2 个字节,这是正确的,因为我结合了 0x28 和 0x06。所以做一个printf。
printf("%x\n", value);
output is: 2806 which is correct.
printf("%d\n", sizeof(value);
output is: 2 bytes which is correct.
当我尝试使用 write 将十六进制写入打开的套接字时出现错误。我究竟做错了什么?