我正在使用TCP套接字。我正在使用写入功能将数据发送到打开的套接字。C write()函数发送2个字节的十六进制
write(Socket_Fd,“test”,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将十六进制写入打开的套接字时出现错误。我究竟做错了什么?
你对你的问题的描述是不明确的。在你的示例代码中,'socket_FD'不是有效的套接字句柄,所以我认为这不是你真正的代码。你可以更新你的问题,以显示真实的代码吗?更好的描述“我得到一个错误”也会有帮助。 – simonc 2013-05-09 12:29:00
'我正在尝试使用写入将十六进制写入打开的套接字时出现错误。我做错了什么?'你*不*显示失败的代码;只有有效的代码。 – wildplasser 2013-05-09 12:29:04
@simonc,是的,这不是真正的代码,我只是做了它,但它是我得到错误的完整代码的一部分,我现在没有完整的代码,因为我在家里,代码是在办公室。我得到的错误是写功能。例如传递一个int类型的值来写入函数。 – demic0de 2013-05-09 12:33:45