char msg2[256]; memset(msg2,0,256); Socket().Read(msg2,4u); // first read 4 bytes with buffer size log.Printf("1. msg2: %04X %04X %04X %04X\n", msg2[0], msg2[1], msg2[2], msg2[3]); log.Printf("2. msg2: %d %d %d %d\n", msg2[0], msg2[1], msg2[2], msg2[3]); unsigned long nlen = *(unsigned long *)msg2; // convert char string (bytes) to int log.Printf("before ntohl: nlen = %d (hex: %04X)", nlen, nlen); nlen = ntohl(nlen); // convert back from network ordered long int log.Printf("after ntohl: nlen = %d (hex: %04X)", nlen, nlen); Socket().Read(msg2, nlen); // read the request log.Printf("Request: %s", msg2);