1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <windows.h> #include <stdio.h> #pragma comment(lib, "Ws2_32.lib") int main() { int lRetVal = 0; char *lRemoteIPStr = "192.168.1.1"; unsigned char lIPArr[4]; unsigned long lIPLongHost = 0; unsigned long lIPLongNet = 0; // From String to 4 byte char array. sscanf((char *) lRemoteIPStr, "%d.%d.%d.%d", &lIPArr[0], &lIPArr[1], &lIPArr[2], &lIPArr[3]); (lIPArr[0] | lIPArr[1] | lIPArr[2] | lIPArr[3]) < 255; // Copy the 4 byte char array to a 4 byte unsigned long, host order CopyMemory(&lIPLongHost, lIPArr, 4); // Convert the unsigned long (host order) variable to network order lIPLongNet = htonl(lIPLongHost); printf("%s -> %d.%.d.%d.%d -> %lu -> %lu \n", lRemoteIPStr, lIPArr[0], lIPArr[1], lIPArr[2], lIPArr[3], lIPLongHost, lIPLongNet); return(lRetVal); } |