socket地址API-創(chuàng)新互聯(lián)

socket 
1.主機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序
背景:現(xiàn)代CPU的累加器一次都能裝載(至少)4字節(jié)(32位機(jī)器)。這4字節(jié)在**內(nèi)存中排列的順序**將影響到它被累加器裝載成整數(shù)的值。
小知識(shí):字節(jié)序分為大端字節(jié)序和小端字節(jié)序。
1.1big endian:一個(gè)整數(shù)的高位字節(jié)(23-31bit)存儲(chǔ)在內(nèi)存的低地址處,低位字節(jié)(0-7bit)存儲(chǔ)在內(nèi)存的高地址處。
1.2little endian:整數(shù)的高位字節(jié)存儲(chǔ)在內(nèi)存的高地址處,而低位字節(jié)儲(chǔ)存在內(nèi)存的低地址處
代碼如下:

    void byteorder(){
            union{
                    short  value;
                    char  union_bytes [sizeof( short )];

            }  test;
            test.value = 0x0102;
            if( (test.union_bytes[0] == 1)&&(test.union_bytes[1] == 2)){
                    printf("big endian");
            }else if( (test.union_bytes[0] == 2)&&(test.union_bytes[1] == 1)){
                printf("ittle  ");
            }else{
            printf("unknown");}
    }

1.3現(xiàn)代PC大多采用小段字節(jié)序,所以小端字節(jié)序又稱為主機(jī)字節(jié)序。
2.當(dāng)格式化的數(shù)據(jù)(32bit or 16bit)在兩臺(tái)不同字節(jié)序的主機(jī)之間傳遞就會(huì)出現(xiàn)問題
2.1解決方案:發(fā)送端總是把要發(fā)送的數(shù)據(jù)轉(zhuǎn)化為大端字節(jié)序在發(fā)送,接收端知道數(shù)據(jù)總是大端字節(jié)序,所以接收端可以根據(jù)自身的情況來決定是否轉(zhuǎn)換(小段轉(zhuǎn)換,大端字節(jié)序不轉(zhuǎn)換)
3.大端字節(jié)序又被稱為網(wǎng)絡(luò)字節(jié)序
4.進(jìn)程字節(jié)問題:同一臺(tái)機(jī)器上的兩個(gè)進(jìn)程,一個(gè)是C語言,一個(gè)是JAVA語言編寫,也要考慮字節(jié)序的問題(JAVA虛擬機(jī)普遍使用大端字節(jié)序)
5.linux轉(zhuǎn)換大小端字節(jié)序的函數(shù)(4個(gè))
5.1 unsigned long int htonl(unsigned long int hostlong);
5.2 unsigned short int htons(unsigned short int hostshort);
5.3 unsigned long int ntohl(unsigned long int netlong);
5.4 unsigned short int ntohs(unsigned short int netshort);

5.5上述四個(gè)含義比較明確:htonl表示host to network long
即將長整數(shù)型(32bit)的主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序數(shù)據(jù)。
5.6長整型函數(shù)通常用來轉(zhuǎn)換IP地址,短整型常用來轉(zhuǎn)換端口號(hào)(不限于此,所有的格式化的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸時(shí),都應(yīng)該使用這些函數(shù)來轉(zhuǎn)換字節(jié)序)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

站在用戶的角度思考問題,與客戶深入溝通,找到海城網(wǎng)站設(shè)計(jì)與海城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋海城地區(qū)。

當(dāng)前文章:socket地址API-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://muchs.cn/article46/dpjeeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、小程序開發(fā)、網(wǎng)站內(nèi)鏈全網(wǎng)營銷推廣、網(wǎng)站維護(hù)、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司