網(wǎng)絡(luò)傳輸是大端還是小端 java網(wǎng)絡(luò)編程是大端還是小端?
java網(wǎng)絡(luò)編程是大端還是小端?網(wǎng)絡(luò)傳輸中使用的大端標(biāo)記方法,即先傳輸權(quán)值較高的數(shù)字,就像先傳輸12、10、2一樣。即使后者輸了,損失也不算太大。小端與機(jī)器有關(guān)。如果您要封裝一個(gè)數(shù)字,比如int,封裝
java網(wǎng)絡(luò)編程是大端還是小端?
網(wǎng)絡(luò)傳輸中使用的大端標(biāo)記方法,即先傳輸權(quán)值較高的數(shù)字,就像先傳輸12、10、2一樣。即使后者輸了,損失也不算太大。小端與機(jī)器有關(guān)。如果您要封裝一個(gè)數(shù)字,比如int,封裝后應(yīng)該是big end。您可以調(diào)用htons()或htonl()函數(shù)將其轉(zhuǎn)換為big end(當(dāng)然,您也可以用big end的方式封裝它,這會(huì)有點(diǎn)麻煩)。在傳輸?shù)倪^程中,當(dāng)然也是大端,接收的緩沖區(qū)也是大端,但是在讀取int類型時(shí),需要將大端轉(zhuǎn)換成小端(使用ntohs()函數(shù)或ntohl()函數(shù)),這樣才能讀取原始的數(shù)字??梢韵胂?,如果使用機(jī)器A和B進(jìn)行通信,而A和B的終端序列相同,則中間沒有轉(zhuǎn)換。但這并不是一個(gè)好習(xí)慣,因?yàn)槿绻浦驳綑C(jī)器的另一端序列,那么就需要修改代碼,嚴(yán)重破壞設(shè)計(jì)。所以最好使用這些函數(shù)。