inet_addr makro (wsipv6ok.h)

Fungsi inet_addr mengonversi string yang berisi alamat desimal bertitik IPv4 menjadi alamat yang tepat untuk struktur IN_ADDR .

Sintaks

void inet_addr(
  [in]  a
);

Parameter

[in] a

String karakter yang dihentikan NULL yang mewakili angka yang dinyatakan dalam standar Internet ".'' Notasi (putus-putus).

Mengembalikan nilai

Tidak ada

Keterangan

Fungsi inet_addr menginterpretasikan string karakter yang ditentukan oleh parameter cp . String ini mewakili alamat Internet numerik yang dinyatakan dalam standar Internet ".'' Notasi. Nilai yang dikembalikan adalah angka yang cocok untuk digunakan sebagai alamat Internet. Semua alamat Internet dikembalikan dalam urutan jaringan IP (byte diurutkan dari kiri ke kanan). Jika Anda meneruskan " " (spasi) ke fungsi inet_addr , inet_addr mengembalikan nol.

Pada Windows Vista dan yang lebih baru, fungsi RtlIpv4StringToAddress dapat digunakan untuk mengonversi representasi string alamat IPv4 ke alamat IPv4 biner yang diwakili sebagai struktur IN_ADDR . Pada Windows Vista dan yang lebih baru, fungsi RtlIpv6StringToAddress dapat digunakan untuk mengonversi representasi string alamat IPv6 ke alamat IPv6 biner yang diwakili sebagai struktur IN6_ADDR .

Alamat Internet

Nilai yang ditentukan menggunakan ".'' notasi mengambil salah satu formulir berikut:

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

Ketika empat bagian ditentukan, masing-masing ditafsirkan sebagai byte data dan ditetapkan, dari kiri ke kanan, ke 4 byte alamat Internet. Ketika alamat Internet dilihat sebagai kuantitas bilangan bulat 32-bit pada arsitektur Intel, byte yang disebut di atas muncul sebagai "d.c.b.a''. Artinya, byte pada prosesor Intel diurutkan dari kanan ke kiri.

Bagian-bagian yang membentuk alamat dalam notasi "." dapat berupa desimal, oktal, atau heksadesimal seperti yang ditentukan dalam bahasa C. Angka yang dimulai dengan "0x" atau "0X" menyiratkan heksadesimal. Angka yang dimulai dengan "0" menyiratkan oktal. Semua angka lainnya ditafsirkan sebagai desimal.

Nilai alamat internet Makna
"4.3.2.16" Desimal
"004.003.002.020" Oktal
"0x4.0x3.0x2.0x10" Heksadesimal
"4.003.002.0x10" Campuran
 

Fungsi inet_addr mendukung notasi desimal, oktal, heksadesimal, dan campuran untuk string yang diteruskan dalam parameter cp .

Catatan Notasi berikut hanya digunakan oleh perangkat lunak Berkeley, dan tidak ada tempat lain di Internet. Untuk kompatibilitas dengan perangkat lunak Berkeley, fungsi inet_addr juga mendukung notasi tambahan yang ditentukan di bawah ini.
 
Ketika alamat tiga bagian ditentukan, bagian terakhir ditafsirkan sebagai kuantitas 16-bit dan ditempatkan di 2 byte paling kanan dari alamat jaringan. Ini membuat format alamat tiga bagian nyaman untuk menentukan alamat jaringan Kelas B sebagai "128.net.host''

Ketika alamat dua bagian ditentukan, bagian terakhir ditafsirkan sebagai kuantitas 24-bit dan ditempatkan di 3 byte paling kanan dari alamat jaringan. Ini membuat format alamat dua bagian nyaman untuk menentukan alamat jaringan Kelas A sebagai "net.host''.

Ketika hanya satu bagian yang diberikan, nilai disimpan langsung di alamat jaringan tanpa pengaturan ulang byte.

Windows Phone 8: Fungsi ini didukung untuk aplikasi Windows Phone Store di Windows Phone 8 dan yang lebih baru.

Windows 8.1 dan Windows Server 2012 R2: Fungsi ini didukung untuk aplikasi Windows Store di Windows 8.1, Windows Server 2012 R2, dan yang lebih baru.

Contoh

Contoh kode berikut menunjukkan cara menggunakan fungsi inet_addr .

#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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8.1, Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header wsipv6ok.h (termasuk Winsock2.h, Winsock.h)
Pustaka Ws2_32.lib
DLL Ws2_32.dll

Lihat juga

IN6_ADDR

IN_ADDR

InetNtop

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddress

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

Fungsi Winsock

Referensi Winsock

inet_ntoa