Тебе не нужен htonl. Если у вас есть IP-адрес в виде отдельных байтов, как это:
uint8_t a [4] = { 192, 168, 2, 1 };
Вы можете просто отправить эти 4 байта в точном порядке по сети. Это если вам не нужно 4-байтовое целое число, чего, скорее всего, нет, поскольку вы, вероятно, не используете sockaddr_in & friends.
Если у вас уже есть адрес в виде 32-битного целого в порядке байтов хоста, вы можете получить a
следующим образом:
uint32_t ip = getIPHostOrder();
uint8_t a [4] = { (ip >> 24) & 0xFF, (ip >> 16) & 0xFF, (ip >> 8) & 0xFF, ip & 0xFF };
Это имеет то преимущество, что не полагается на поведение, определенное реализацией, и является переносимым.