Türchen Nummer 19

Wer dem Weihnachtstress ein wenig aus dem Weg gehen möchte vermeidet es am besten die Geschenke auf althergebrachte Weise in der Stadt oder sonstigen Einkaufläden zu besorgen.
Nichts ist entspannter als ein Einkaufbummel im Internet. Und wenn man die Einkauftour rechtzeitig beginn bekommt auch keinen Stress mit den Lieferzeiten.
Um aber trotzdem an sein Paket zu kommen muss man natürlich seine eigene Adresse mitteilen.
Gleiches gilt auch für Anwendung die auf Netzwerkdienste zugreifen. Oftmals muss die Anwendung die eigene IP Adresse nicht kennen, da es durch die zugrunde liegenden Protokolle automatisch passiert. Ab und an kann es aber vorkommen dass diese Information benötigt wird.
Dazu kann das folgende Codeschnipsel verwendet werden:

C++

#include "iphlpapi.h"
#pragma comment(lib, "Iphlpapi.lib")

//Wir listen mal etwas mehr auf als nur die aktuellen IPs.
//Adapter Information anlegen
PIP_ADAPTER_INFO pAdapterInfo;
ULONG lRetLen = sizeof(PIP_ADAPTER_INFO);
//Benötigte Speichergrösse holen
DWORD dwRet = GetAdaptersInfo(NULL,&lRetLen);
//Informationen zu allen Adaptern holen
pAdapterInfo = (PIP_ADAPTER_INFO) malloc (lRetLen);
dwRet = GetAdaptersInfo(pAdapterInfo,&lRetLen);
if(dwRet == ERROR_SUCCESS)
{
    //Informationen nur für den aktuellen Adapter
    PIP_ADAPTER_INFO pCurrentAdapter = pAdapterInfo;
    while (pCurrentAdapter != NULL )
    {
        //Systemindex
        printf("Adapterindex: %in",pCurrentAdapter->Index);
        //Beschreibung
        printf("Beschreibung: %sn",pCurrentAdapter->Description);
        //IP Addresse
        printf("IP: %sn",pCurrentAdapter->IpAddressList.IpAddress.String);
        //Gateway
        printf("Gateway: %sn",pCurrentAdapter->GatewayList.IpAddress.String);
        //Subnet
        printf("Subnet: %sn",pCurrentAdapter->IpAddressList.IpMask.String);
        //Erweiterte IP Infos anlegen
        PIP_PER_ADAPTER_INFO pPerAdapterInfo;
        lRetLen = sizeof(PIP_PER_ADAPTER_INFO);
        //Benötigte Speichergrösse holen
        dwRet = GetPerAdapterInfo(pCurrentAdapter->Index,NULL,&lRetLen);
        //Erweiterte IP Infos abfragen    
        pPerAdapterInfo = (PIP_PER_ADAPTER_INFO) malloc (lRetLen);
        dwRet = GetPerAdapterInfo(pCurrentAdapter->Index,pPerAdapterInfo,&lRetLen);
        //DNS1
        printf("DNS: %sn",pPerAdapterInfo->DnsServerList.IpAddress.String);
        //DNS2
        if(pPerAdapterInfo->DnsServerList.Next != NULL)
            printf("DNS2: %sn",pPerAdapterInfo->DnsServerList.Next->IpAddress.String);
        //Interface anlegen
        MIB_IFROW IfRow;
        memset( &IfRow, NULL, sizeof( MIB_IFROW ) );
        //Index zum abfragen setzen
        IfRow.dwIndex = pCurrentAdapter->Index;
        //Interface abfragen
        GetIfEntry(&IfRow);
        //MAC Adresse
        printf("MAC: %02x-%02x-%02x-%02x-%02x-%02xn",IfRow.bPhysAddr[0], IfRow.bPhysAddr[1], IfRow.bPhysAddr[2], IfRow.bPhysAddr[3], IfRow.bPhysAddr[4], IfRow.bPhysAddr[5]);
        //Den Namen(ClassID) brauchen wir auch…
        printf("ClassID: %sn",pCurrentAdapter->AdapterName);
        //Nächster Adapter
        pCurrentAdapter = pCurrentAdapter->Next;
    }
}



C#

In C# geht dies ebenfalls ganz einfach, auch wenn es wild aussieht:

using System.Net;

IPHostEntry enty = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ipadress in enty.AddressList)
{
    Console.WriteLine("IP: " + ipadress.ToString());   
}

Patrick & Peter

About these ads
Dieser Beitrag wurde unter Windows Mobile veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ photo

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s