This function converts a string containing a dotted address into a network address in the format of an IN_ADDR structure.
At a Glance
Header file: | Winsock.h |
Windows CE versions: | 1.0 and later |
Syntax
unsigned long inet_addr (const char *cp);
Parameters
cp
[in] Null-terminated string that represents a number expressed in the Internet standard ".'' (dotted) notation.
Return Values
An unsigned long value containing a suitable binary representation of the specified Internet address indicates that no error occurred. INADDR_NONE indicates that the string in the cp parameter does not contain a legitimate Internet address, for example, if a portion of an "a.b.c.d" address exceeds 255.
Remarks
The inet_addr function interprets the character string specified by the cp parameter. This string represents a numeric Internet address expressed in the Internet standard ".'' notation. The value returned is a number suitable for use as an Internet address. All Internet addresses are returned in IP’s network order (bytes ordered from left to right).
Internet Addresses
Values specified using the ".'' notation take one of the following forms:
a.b.c.d a.b.c a.b a
When four parts are specified, each is interpreted as a byte of data and assigned, from left to right, to the four bytes of an Internet address. When an Internet address is viewed as a 32-bit integer quantity on the Intel architecture, the bytes referred to above appear as "d.c.b.a''. That is, the bytes on an Intel processor are ordered from right to left.
The parts that make up an address in "." notation can be decimal, octal or hexadecimal as specified in the C language. Numbers that start with "0x" or "0X" imply hexadecimal. Numbers that start with "0" imply octal. All other numbers are interpreted at decimal.
"4.3.2.16" | decimal |
"004.003.002.020" | octal |
"0x4.0x3.0x2.0x10" | hexadecimal |
"4.003.002.0x10" | mix |
Note The following notations are only used by Berkeley, and nowhere else on the Internet. In the interests of compatibility with their software, they are supported as specified.
When a three-part address is specified, the last part is interpreted as a 16-bit quantity and placed in the right-most two bytes of the network address. This makes the three-part address format convenient for specifying Class B network addresses as "128.net.host''.
When a two-part address is specified, the last part is interpreted as a 24-bit quantity and placed in the right-most three bytes of the network address. This makes the two-part address format convenient for specifying Class A network addresses as "net.host''.
When only one part is given, the value is stored directly in the network address without any byte rearrangement.
See Also