Около года назад есть сообщение о переполнении стека, которое спрашивает о чем-то подобном ( этот пост ).
Основная причина в том, как inet_aton()
( man-страница ) преобразует октеты в двоичный адрес.
ABCD
Каждая из четырех числовых частей указывает байт адреса; байты назначаются в порядке слева направо для создания двоичного адреса.
азбука
Части a и b определяют первые два байта двоичного адреса. Часть c интерпретируется как 16-битное значение, которое определяет самые правые два байта двоичного адреса. Эта нотация подходит для указания (устаревших) сетевых адресов класса B.
аб
Часть a определяет первый байт двоичного адреса. Часть b интерпретируется как 24-битное значение, которое определяет самые правые три байта двоичного адреса. Эта нотация подходит для указания (устаревших) сетевых адресов класса C.
a
Значение a интерпретируется как 32-разрядное значение, которое сохраняется непосредственно в двоичный адрес без какой-либо перестановки байтов.
Это не определено POSIX.anything - но это доступно довольно широко.