中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

socket地址API

發布時間:2020-07-05 14:48:44 來源:網絡 閱讀:615 作者:jackdongting 欄目:建站服務器
socket 
1.主機字節序和網絡字節序
背景:現代CPU的累加器一次都能裝載(至少)4字節(32位機器)。這4字節在**內存中排列的順序**將影響到它被累加器裝載成整數的值。
小知識:字節序分為大端字節序和小端字節序。
1.1big endian:一個整數的高位字節(23-31bit)存儲在內存的低地址處,低位字節(0-7bit)存儲在內存的高地址處。
1.2little endian:整數的高位字節存儲在內存的高地址處,而低位字節儲存在內存的低地址處
代碼如下:

    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現代PC大多采用小段字節序,所以小端字節序又稱為主機字節序。
2.當格式化的數據(32bit or 16bit)在兩臺不同字節序的主機之間傳遞就會出現問題
2.1解決方案:發送端總是把要發送的數據轉化為大端字節序在發送,接收端知道數據總是大端字節序,所以接收端可以根據自身的情況來決定是否轉換(小段轉換,大端字節序不轉換)
3.大端字節序又被稱為網絡字節序
4.進程字節問題:同一臺機器上的兩個進程,一個是C語言,一個是JAVA語言編寫,也要考慮字節序的問題(JAVA虛擬機普遍使用大端字節序)
5.linux轉換大小端字節序的函數(4個)
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上述四個含義比較明確:htonl表示host to network long
即將長整數型(32bit)的主機字節序轉換為網絡字節序數據。
5.6長整型函數通常用來轉換IP地址,短整型常用來轉換端口號(不限于此,所有的格式化的數據通過網絡傳輸時,都應該使用這些函數來轉換字節序)
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

明水县| 明光市| 湘潭县| 三台县| 藁城市| 浮梁县| 郑州市| 沂源县| 沁水县| 安多县| 蛟河市| 酉阳| 高唐县| 滨海县| 伊通| 汕尾市| 西宁市| 江源县| 衢州市| 阿克苏市| 昌乐县| 拉孜县| 新绛县| 兴山县| 江安县| 丹巴县| 合作市| 鄂托克前旗| 肥城市| 洪泽县| 榆社县| 岳普湖县| 阿克苏市| 巧家县| 横峰县| 克什克腾旗| 奉化市| 金沙县| 昌图县| 锦屏县| 额尔古纳市|