我正在使用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