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 the network byte order.
When establishing an Internet socket connection, you must make sure that
the data in the
sin_addr members of the
sockaddr_in structure are represented in the 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
If you use
inet_addr to get the port number and host address, the values are
already in the network byte order, and you can copy them directly into
Otherwise, you have to convert the values explicitly. Use
ntohs to convert values for the
ntohl to convert values for the
sin_addr member. (Remember,
struct in_addr is equivalent
unsigned long int.) These functions are declared in
shortinteger hostshort from host byte order to network byte order.
shortinteger netshort from network byte order to host byte order.
longinteger hostlong from host byte order to network byte order.
longinteger netlong from network byte order to host byte order.
Go to the first, previous, next, last section, table of contents.