Wie funktioniert inet_addr / in_addr?
-
Hi Leute und zwar wie kann ich ein "in_addr" Struktur selbst komplett füllen?
Bzw. Welche Funktionen gibt es noch um eine in_addr Struktur zu füllen? inet_addr füllt mir nämlich den 32 Bit wert, wie berechne ich die anderen 2x16 bzw. 4x8 Bits (ja die muss man nicht berechnen, ich weiß :))
Hab es mal damit funktioniert liefert aber falsche Werte:
BYTE ip1 = 192; BYTE ip2 = 168; BYTE ip3 = 1; BYTE ip4 = 1; pIpHeader->ip_dst.S_un.S_un_b.s_b1 = ip1; pIpHeader->ip_dst.S_un.S_un_b.s_b2 = ip2; pIpHeader->ip_dst.S_un.S_un_b.s_b3 = ip3; pIpHeader->ip_dst.S_un.S_un_b.s_b4 = ip4; pIpHeader->ip_dst.S_un.S_addr = ip1 << 24 | ip2 << 16 || ip3 << 8 || ip4; pIpHeader->ip_dst.S_un.S_un_w.s_w1 = ip1 << 8 | ip2; pIpHeader->ip_dst.S_un.S_un_w.s_w2 = ip3 << 8 | ip4;
-
Du hast nicht auf Host-Byte-Order vs. Network-Byte-Order geachtet. Ausserdem hast du | mit || verwechselt.

-
Du hast nicht auf Host-Byte-Order vs. Network-Byte-Order geachtet
Öhm Nein?
Wasn dat 
Ausserdem hast du | mit || verwechselt.
Danke

-
Öhm Nein?
Wasn dat 
-
Ok, perfect es klappt - danke!
unsigned long ip_add = ip1 << 24 | ip2 << 16 | ip3 << 8 | ip4; if( htonl(ip_add) == inet_addr("192.168.1.1") ) { printf("\nYESSS :)"); }