Notice in the man page for gethostbyname that the IP address array is in network byte order. This is the same as internal byte order for PPC architecture but reversed for Intel x86 architecture.
So you need to transform all IP addresses before using. There is a function called ntohl that does this for you.
BYTEORDER(3) BSD Library Functions Manual BYTEORDER(3)
NAME
htonl, htons, ntohl, ntohs -- convert values between host and network byte order
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <arpa/inet.h>
uint32_t
htonl(uint32_t hostlong);
uint16_t
htons(uint16_t hostshort);
uint32_t
ntohl(uint32_t netlong);
uint16_t
ntohs(uint16_t netshort);
DESCRIPTION
These routines convert 16 and 32 bit quantities between network byte order and host byte order. On machines which have a byte order which is the same as the network order, routines are defined as null
macros.
These routines are most often used in conjunction with Internet addresses and ports as returned by gethostbyname(3) and getservent(3).
SEE ALSO
gethostbyname(3), getservent(3)
STANDARDS
The byteorder functions are expected to conform with IEEE Std POSIX.1-200x (``POSIX.1'').
HISTORY
The byteorder functions appeared in 4.2BSD.
BUGS
On the VAX bytes are handled backwards from most everyone else in the world. This is not expected to be fixed in the near future.
BSD June 4, 1993 BSD
(END)