我通過套接字發送字節並且工作正常。現在就傳輸文件而言,我需要在發送實際數據之前發送文件大小。所以我想出了一個想法,即在文件數據之前發送文件大小作爲標題。C Socket,在數據流之前添加標頭
例如,如果文件數據是"1234"
,那麼套接字將在"1234"
之前發送其長度爲4的字節(它是4),並且將有8個字節通過套接字發送。前4個字節包含數據長度,其餘字節爲實際數據。
我可以轉換由INT成字節(即字符數組):
bytes[0] = (n >> 24) & 0xFF;
bytes[1] = (n >> 16) & 0xFF;
bytes[2] = (n >> 8) & 0xFF;
bytes[3] = n & 0xFF;
問題是前的實際數據,我不能添加此4個字節:
char *data = [Actual data of file];
char *buffer = malloc(4 + strlen(data));
strcpy(buffer, bytes);
strcat(buffer, data);
這樣的結果是bytes[]
消失了,buffer
與data
有完全相同的數據任何人都可以幫助我嗎?
是的,我認爲memcpy的可以工作。謝謝。你是什麼意思的終止字符串?我認爲終止符已經在'data'字符串的最後一個字符處了。 – SnowWolf 2014-10-02 03:48:09
C字符串的最後一個字符是最終字符''\ 0''(或者只是'0')。但是,這不是字符串本身的一部分:''hello''是'{'h','e','l','l','o','\ 0'}'。請注意,即使'strlen(「hello」)'爲5,該字符串也由6個字符組成。 – misberner 2014-10-02 06:02:40