Freigeben über


inet_addr-Funktion (winsock2.h)

Die inet_addr-Funktion konvertiert eine Zeichenfolge, die eine IPv4-Dezimaladresse enthält, in eine richtige Adresse für die IN_ADDR-Struktur .

Syntax

unsigned long WSAAPI inet_addr(
  const char *cp
);

Parameter

cp

TBD

Rückgabewert

Wenn kein Fehler auftritt, gibt die inet_addr-Funktion einen wert ohne Vorzeichen zurück, der eine geeignete binäre Darstellung der angegebenen Internetadresse enthält.

Wenn die Zeichenfolge im cp-Parameter keine legitime Internetadresse enthält, z. B. wenn ein Teil einer "a.b.c.d"-Adresse 255 überschreitet, gibt inet_addr den Wert INADDR_NONE zurück.

Wenn die Zeichenfolge im cp-Parameter unter Windows Server 2003 eine leere Zeichenfolge ist, gibt inet_addr den Wert INADDR_NONE zurück. Wenn NULL im cp-Parameter übergeben wird, gibt inet_addr den Wert INADDR_NONE zurück.

Wenn die Zeichenfolge im cp-Parameter unter Windows XP eine leere Zeichenfolge ist, gibt inet_addr den Wert INADDR_ANY zurück. Wenn NULL im cp-Parameter übergeben wird, gibt inet_addr den Wert INADDR_NONE zurück.

Hinweise

Die inet_addr-Funktion interpretiert die durch den cp-Parameter angegebene Zeichenfolge. Diese Zeichenfolge stellt eine numerische Internetadresse dar, die im Internetstandard " ausgedrückt wird. Notation. Der zurückgegebene Wert ist eine Zahl, die für die Verwendung als Internetadresse geeignet ist. Alle Internetadressen werden in der Ip-Netzwerkreihenfolge zurückgegeben (Byte von links nach rechts sortiert). Wenn Sie in " " (ein Leerzeichen) an die inet_addr-Funktion übergeben, gibt inet_addr null zurück.

Unter Windows Vista und höher kann die RtlIpv4StringToAddress-Funktion verwendet werden, um eine Zeichenfolgendarstellung einer IPv4-Adresse in eine binäre IPv4-Adresse zu konvertieren, die als IN_ADDR Struktur dargestellt wird. Unter Windows Vista und höher kann die RtlIpv6StringToAddress-Funktion verwendet werden, um eine Zeichenfolgendarstellung einer IPv6-Adresse in eine binäre IPv6-Adresse zu konvertieren, die als IN6_ADDR Struktur dargestellt wird.

Internetadressen

Werte, die mit dem ".'' angegeben werden Die Notation hat eine der folgenden Formen:

a.b.c.d a.b.c a.b.c a

Wenn vier Teile angegeben werden, wird jeder als Byte von Daten interpretiert und den 4 Bytes einer Internetadresse von links nach rechts zugewiesen. Wenn eine Internetadresse in der Intel-Architektur als ganzzahlige 32-Bit-Menge angezeigt wird, werden die oben genannten Bytes als "d.c.b.a" angezeigt. Das heißt, die Bytes auf einem Intel-Prozessor werden von rechts nach links sortiert.

Die Teile, aus denen eine Adresse in der Notation "." besteht, können dezimal, oktal oder hexadezimal sein, wie in der Sprache C angegeben. Zahlen, die mit "0x" oder "0X" beginnen, implizieren hexadezimal. Zahlen, die mit "0" beginnen, implizieren oktal. Alle anderen Zahlen werden als Dezimalwerte interpretiert.

Internetadressenwert Bedeutung
"4.3.2.16" Decimal
"004.003.002.020" Oktal
"0x4.0x3.0x2.0x10" Hexadezimal
"4.003.002.0x10" Mischung
 

Die inet_addr-Funktion unterstützt die dezimalen, oktalen, hexadezimalen und gemischten Notationen für die im cp-Parameter übergebene Zeichenfolge.

Hinweis Die folgenden Notationen werden nur von Berkeley-Software verwendet, und nirgendwo sonst im Internet. Aus Gründen der Kompatibilität mit Berkeley-Software unterstützt die inet_addr-Funktion auch die unten angegebenen zusätzlichen Notationen.
 
Wenn eine dreiteilige Adresse angegeben wird, wird der letzte Teil als 16-Bit-Menge interpretiert und in den 2 Byte rechts der Netzwerkadresse platziert. Dadurch ist das dreiteilige Adressformat für die Angabe von Netzwerkadressen der Klasse B als "128.net.host"geeignet.

Wenn eine zweiteilige Adresse angegeben wird, wird der letzte Teil als 24-Bit-Menge interpretiert und in den 3 Byte rechts der Netzwerkadresse platziert. Dadurch ist das zweiteilige Adressformat für die Angabe von Netzwerkadressen der Klasse A als "net.host" bequem.

Wenn nur ein Teil angegeben wird, wird der Wert ohne Byteanordnung direkt in der Netzwerkadresse gespeichert.

Windows Phone 8: Diese Funktion wird für Windows Phone Store-Apps auf Windows Phone 8 und höher unterstützt.

Windows 8.1 und Windows Server 2012 R2: Diese Funktion wird für Windows Store-Apps auf Windows 8.1, Windows Server 2012 R2 und höher unterstützt.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der inet_addr-Funktion veranschaulicht.

#define WIN32_LEAN_AND_MEAN

#include <winsock2.h>
#include <stdio.h>
#include <windows.h>


// need link with Ws2_32.lib
#pragma comment(lib, "Ws2_32.lib")

int __cdecl main(int argc, char **argv)
{

    //-----------------------------------------
    // Declare and initialize variables
    WSADATA wsaData;
    int iResult;

    unsigned long ulAddr = INADDR_NONE;

    // Validate the parameters
    if (argc != 2) {
        printf("usage: %s <IPv4 address>\n", argv[0]);
        printf("  inetaddr converts a string containing an\n");
        printf("  IPv4 address in one of the supported formats\n");
        printf("  to a unsigned long representing an IN_ADDR\n");
        printf("      %s 192.168.16.34\n", argv[0]);
        return 1;
    }
    // Initialize Winsock
    iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) {
        printf("WSAStartup failed: %d\n", iResult);
        return 1;
    }

//--------------------------------
// Call inet_addr(). If the call succeeds,
// the result variable will hold a IN_ADDR
    ulAddr = inet_addr(argv[1]);
    if ( ulAddr == INADDR_NONE ) {
        printf("inet_addr failed and returned INADDR_NONE\n");
        WSACleanup();
        return 1;
    }   
    
    if (ulAddr == INADDR_ANY) {
        printf("inet_addr failed and returned INADDR_ANY\n");
        WSACleanup();
        return 1;  
    }

    printf("inet_addr returned success\n");
    
    // Here we could implement code to retrieve each address and 
    // print out the hex bytes
    // for(i=0, ptr= (Char*) &ulAddr; i < 4; i++, ptr++) {

    WSACleanup();
    return 0;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8.1, Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winsock2.h (einschließlich Winsock2.h, Winsock.h)
Bibliothek Ws2_32.lib
DLL Ws2_32.dll

Weitere Informationen

IN6_ADDR

IN_ADDR

InetNtop

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddress

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

Winsock-Funktionen

Winsock-Referenz

inet_ntoa