zoukankan      html  css  js  c++  java
  • Byte Order Conversion

    Byte Order Conversion


    Different kinds of computers use different conventions for the ordering of bytes within a
    word. Some computers put the most significant byte within a word first (this is called
    “big-endian” order), and others put it last (“little-endian” order).

    So that machines with different byte order conventions can communicate, the Internet
    protocols specify a canonical byte order convention for data transmitted over the network.
    This is known as network byte order.
    When establishing an Internet socket connection, you must make sure that the data
    in the sin_port and sin_addr members of the sockaddr_in structure are represented in
    network byte order. If you are encoding integer data in the messages sent through the socket,
    you should convert this to network byte order too. If you don’t do this, your program may
    fail when running on or talking to other kinds of machines.
    If you use getservbyname and gethostbyname or inet_addr to get the port number
    and host address, the values are already in network byte order, and you can copy them
    directly into the sockaddr_in structure.
    Otherwise, you have to convert the values explicitly. Use htons and ntohs to convert
    values for the sin_port member. Use htonl and ntohl to convert IPv4 addresses for
    the sin_addr member. (Remember, struct in_addr is equivalent to uint32_t.) These
    functions are declared in ‘netinet/in.h’.
    uint16_t htons (uint16 t hostshort) [Function]
    This function converts the uint16_t integer hostshort from host byte order to network
    byte order.

    uint16_t ntohs (uint16 t netshort) [Function]
    This function converts the uint16_t integer netshort from network byte order to host
    byte order.
    uint32_t htonl (uint32 t hostlong) [Function]
    This function converts the uint32_t integer hostlong from host byte order to network
    byte order.
    This is used for IPv4 Internet addresses.
    uint32_t ntohl (uint32 t netlong) [Function]
    This function converts the uint32_t integer netlong from network byte order to host
    byte order.
    This is used for IPv4 Internet addresses.

  • 相关阅读:
    (LeetCode 141/142)Linked List Cycle
    (算法)随机播放歌曲
    (数组)数组排序,使所有奇数在左边,所有偶数在右边
    遗失的乔布斯访谈(文字版)
    幻想·梦想·理想
    立刻辞职,时不我待
    彩票漏洞让你快速致富
    剪刀石头布常胜秘笈
    9个心理学研究,让你学习更高效
    石头剪刀布手套:不止是寂寞宅的消遣
  • 原文地址:https://www.cnblogs.com/haimingwey/p/2474697.html
Copyright © 2011-2022 走看看