Moin,
Das Problem ist jedoch, daß man einen 16 Bit BE in C nicht in einem uint16_t ablegen sollte wenn der Prozessor diesen uint16_t als LE auffasst. Nicht einmal mit einem dicken Kommentar dahinter würde ich das tun!
dann erklär mir mal bitte, was daran falsch sein sollte:
const uint16_t someNo = 42;
uint16_t someNwNo = htons(someNo); /* someNo in network byte order */
printf("Writing to network something #%u\n", someNo);
write(sockh, &someNwNo, 2);
Viele Grüße
Robert