Host Address Data Type
......................
IPv4 Internet host addresses are represented in some contexts as
integers (type `uint32_t'). In other contexts, the integer is packaged
inside a structure of type `struct in_addr'. It would be better if the
usage were made consistent, but it is not hard to extract the integer
from the structure or put the integer into a structure.
You will find older code that uses `unsigned long int' for IPv4
Internet host addresses instead of `uint32_t' or `struct in_addr'.
Historically `unsigned long int' was a 32-bit number but with 64-bit
machines this has changed. Using `unsigned long int' might break the
code if it is used on machines where this type doesn't have 32 bits.
`uint32_t' is specified by Unix98 and guaranteed to have 32 bits.
IPv6 Internet host addresses have 128 bits and are packaged inside a
structure of type `struct in6_addr'.
The following basic definitions for Internet addresses are declared
in the header file `netinet/in.h':
- Data Type: struct in_addr
This data type is used in certain contexts to contain an IPv4
Internet host address. It has just one field, named `s_addr',
which records the host address number as an `uint32_t'.
- Macro: uint32_t INADDR_LOOPBACK
You can use this constant to stand for "the address of this
machine," instead of finding its actual address. It is the IPv4
Internet address `127.0.0.1', which is usually called `localhost'.
This special constant saves you the trouble of looking up the
address of your own machine. Also, the system usually implements
`INADDR_LOOPBACK' specially, avoiding any network traffic for the
case of one machine talking to itself.
- Macro: uint32_t INADDR_ANY
You can use this constant to stand for "any incoming address" when
binding to an address. Note:Setting Address. This is the usual
address to give in the `sin_addr' member of `struct sockaddr_in'
when you want to accept Internet connections.
- Macro: uint32_t INADDR_BROADCAST
This constant is the address you use to send a broadcast message.
- Macro: uint32_t INADDR_NONE
This constant is returned by some functions to indicate an error.
- Data Type: struct in6_addr
This data type is used to store an IPv6 address. It stores 128
bits of data, which can be accessed (via a union) in a variety of
ways.
- Constant: struct in6_addr in6addr_loopback
This constant is the IPv6 address `::1', the loopback address. See
above for a description of what this means. The macro
`IN6ADDR_LOOPBACK_INIT' is provided to allow you to initialize your
own variables to this value.
- Constant: struct in6_addr in6addr_any
This constant is the IPv6 address `::', the unspecified address.
See above for a description of what this means. The macro
`IN6ADDR_ANY_INIT' is provided to allow you to initialize your own
variables to this value.