編者:李國帥
由於不同的cpu或者作業系統的主機序不一樣,導致在讀寫檔案或者檔案傳送的時候,使用的規則不一樣。
多位元組資料型別在不同的cpu上可能讀寫方式不同。
同時不同編譯器對bitfield的處理方式也可能不一樣。
所以資料結構中的int型和short型變數需要在網路的兩頭先變成相同的格式傳送,接收的時候再從相同的格式轉變為本機格式進行處理。
而且,資料中不要使用bitfield。
訊息頭 起始碼 識別符號 內容格式 訊息長度
8bytes 2 byte 1bytes 1byte 4 bytes
識別符號 1個位元組,從高至低位(7?0)標識如下:
bit 7 – bit 3:保留
bit 2位:是否加密:1-訊息加密,0-訊息未加密
bit 1位:是否壓縮:1-訊息壓縮,0-訊息未壓縮
bit 0位:訊息是否做和校驗:1-訊息有和校驗,0-訊息未做和校驗
識別符號欄位在windows和mac環境中編譯之後的順序是不同的,雖然都可能是x86機器。暫時不做修改。
按照約定,不管對於任何的cpu和作業系統,都知道網路上使用什麼格式(網路上使用big-endian格式)。
這樣,網路自身使用什麼格式對主機來說是透明的,不需要管理。這裡僅僅把網路順序作為cpu中自序識別的乙個參考。
對於多位元組字段,傳送的時候使用htons或者htonl。接收的時候使用ntohs或者ntohl。
理解網路位元組序與主機位元組序
主機位元組序就是我們平常說的大端和小端模式 不同的cpu有不同的位元組序型別,這些位元組序是指整數在記憶體中儲存的順序,這個叫做主機序。引用標準的big endian和little endian的定義如下 a little endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高...
理解位元組序 大端位元組序和小端位元組序
計算機硬體有兩種儲存資料的方式 大端位元組序 big endian 和小端位元組序 little endian 舉例來說,數值0x2211使用兩個位元組儲存 高位位元組是0x22,低位位元組是0x11。大端位元組序 高位位元組在前,低位位元組在後,這是人類讀寫數值的方法。小端位元組序 低位位元組在前...
理解位元組序
日期 2016年11月22日 1.計算機硬體有兩種儲存資料的方式 大端位元組序 big endian 和小端位元組序 little endian 舉例來說,數值0x2211使用兩個位元組儲存 高位位元組是0x22,低位位元組是0x11。同理,0x1234567的大端位元組序和小端位元組序的寫法如下圖...