• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 200, comments - 8, trackbacks - 0, articles - 0

            Linux下網絡IP地址的轉換函數 (轉)

            Posted on 2013-01-09 18:02 鑫龍 閱讀(604) 評論(0)  編輯 收藏 引用 所屬分類: linux編程

            網絡IP地址本是用32位二進制來表示的,為了記憶的方便可以用點分十進制來表示IP地址,同時,網絡IP地址在網絡傳輸和計算機內部的存儲方式也不同,需要用函數來進行轉換。 

            1.將點分十進制字符串轉換成十進制長整型數:in_addr_t inet_addr(const char *cp);       in_addr_t 即long型,參數cp表示一個點分十進制字符串,返回值是十進制長整型數。 

            2.將長整型IP地址轉換成點分十進制:char *inet_ntoa(struct in_addr in);   參數in是一個in_addr類型的結構體,這個結構體在man 7 ip中查得到:
              struct in_addr{
                 uint32_t s_addr
              };
            inet_ntoa返回的是點分十進制的IP地址字符串。
             

            3.主機字符順序和網絡字符順序的轉換:計算機中的字符和網絡中的字符的存儲順序是不同的,計算機中的整型數和網絡中的整型數進行交換時,需要相關的函數進行轉換。如果將計算機中的長整型IP地址轉換成網絡字符順序的整型IP地址,使用htonl函數。這些函數如下:

            uint32_t htonl(uint32_t hostlong);將計算機中的32位長整型數轉換成網絡字符順序的32位長整型數。(用于IP的轉換)

            uint16_t htons(uint16_t hostshort);將計算機中的16位整型數轉換成網絡字符順序的16位整型數。。(用于port的轉換)

            uint32_t ntohl(uint32_t netlong);將網絡中的32位常整型數轉換成計算機中的32位長整型數。。(用于IP的轉換)

            uint16_t ntons(uint16_t netshort);將網絡中的16位整型數轉換成計算機中的16位整型數。。(用于port的轉換)

            轉自:
            http://www.linuxidc.com/Linux/2012-01/51068.htm

            欧美久久综合性欧美| 久久亚洲AV无码精品色午夜麻豆| 久久精品中文无码资源站| 日韩精品久久无码人妻中文字幕| 精品久久香蕉国产线看观看亚洲| 久久国产香蕉视频| 中文精品久久久久人妻不卡| 99久久免费国产特黄| 欧美日韩成人精品久久久免费看 | 久久国产精品77777| 91久久精品电影| 三上悠亚久久精品| 性高湖久久久久久久久AAAAA| 2021精品国产综合久久| 性欧美大战久久久久久久| 国产精品美女久久久| 亚洲精品无码久久久久去q| 久久午夜福利电影| 久久精品中文字幕久久| 久久国产精品99国产精| 久久久精品国产免大香伊| 久久久WWW成人| 国产午夜福利精品久久| 久久国产亚洲高清观看| 久久精品国产乱子伦| 亚洲精品午夜国产va久久| 久久久91人妻无码精品蜜桃HD| 狠狠狠色丁香婷婷综合久久俺| 久久久久亚洲精品天堂| 久久婷婷国产剧情内射白浆| 亚洲国产天堂久久综合| 日本国产精品久久| 日韩久久久久中文字幕人妻| 久久人人爽人人爽人人片AV东京热| 久久这里只精品国产99热| 久久综合九色综合欧美狠狠| 日韩精品久久久久久| 国产精品午夜久久| 久久综合伊人77777麻豆| 久久亚洲国产成人影院网站| 日本久久中文字幕|