Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » IP Adresse unter mfc++ bekommen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.12.2005, 15:17 Uhr
~tom22
Gast


Hi, wie kann man mit mfc++ (kein .net) die IP Adresse des Rechners herausbekommen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.12.2005, 15:06 Uhr
~Stefan
Gast


Bevor ich lange was erkläre, poste ich einfach mal direkt den Code


C++:
#include <stdio.h>
#include <WinSock.h>
#include <iostream>
#include <string>     // für variablentyp "string"
using namespace std;
#pragma comment(lib, "wsock32.lib")

void main()
{
   WORD wVersionRequested;
   WSADATA wsaData;
   char name[255];
   int n;
   string IP[10];
   PHOSTENT hostinfo;
   wVersionRequested = MAKEWORD( 1, 1 );

   if( (WSAStartup( wVersionRequested, &wsaData ) == 0) && (gethostname ( name, sizeof(name)) == 0) &&  ((hostinfo = gethostbyname(name)) != NULL))
   {
      for(n=0; hostinfo->h_addr_list[n];n++)
      {
         IP[n] = inet_ntoa(*(struct in_addr *)hostinfo->h_addr_list[n]);
      }
      cout << "Dieser PC heisst: " << name << endl;
      for (n=0; IP[n].length()!=0; n++)
      {
         cout << "IP #" << n+1 << " = " << IP[n] << endl;
      }
   }
   system("pause");   //warte, auf eingabe - ansonsten schliesst sich das fenster sofort
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.12.2005, 22:02 Uhr
~tom22
Gast


Danke, funktioniert!!!!

Wäre es vermessen, wenn ich noch nach einem Beispiel für die MAC Adresse der Netzwerkkarte des Rechners frage??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.12.2005, 09:30 Uhr
xXx
Devil


das scheint aber die Lokale IP Adresse zu sein, hab deinen COde zwar net ausprovbiert, aber an die, die du dann auch im iNet, also die die der Router hat kommst du nur ran, wenn du auf nem Server zugreifst und dir von dem dann deine Zuigriffs IP geben lässt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.01.2006, 00:37 Uhr
~funny
Gast


gibt es noch eine Variante den Namen einer Netzwerkverbindung zu bekommen, a la ipconf???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.01.2006, 10:18 Uhr
mutche



Schau dir mal den folgenden Code an, damit kannst du alle Daten für einen Netzwerkadapter auslesen.

den Hostnamen hast du ja schon :-)

Gruss

C++:

BOOL xxxyyyzzz::GetAdapterData()
{
    BOOL bResult = FALSE;
    PIP_ADAPTER_INFO pAdapterInfo = NULL;
    PIP_ADAPTER_INFO pAdapter = NULL;
    
    unsigned long ulOutBufferLength = sizeof(IP_ADAPTER_INFO);
    pAdapterInfo = (PIP_ADAPTER_INFO) malloc( ulOutBufferLength/*sizeof(IP_ADAPTER_INFO)*/ );
    
    // Make an initial call to GetAdaptersInfo to get
    // the necessary size into the ulOutBufLen variable
    if (ERROR_BUFFER_OVERFLOW == GetAdaptersInfo( pAdapterInfo, &ulOutBufferLength))
    {
        //freigeben den vorher allocierten speichers
        free(pAdapterInfo);
        //belegen des specher mit Länge anhand der Adapteranzahl
        pAdapterInfo = (PIP_ADAPTER_INFO) malloc (ulOutBufferLength);
        int iError= 0;
        iError = GetAdaptersInfo( pAdapterInfo, &ulOutBufferLength);

        switch(iError)
        {
            case ERROR_NO_DATA:
            {
                AfxMessageBox("No adapter information exists for the local computer");
                break;
            }
            case ERROR_NOT_SUPPORTED:
            {
                AfxMessageBox("GetAdaptersInfo is not supported by the operating system running on the local computer");
                break;
            }
            case ERROR_BUFFER_OVERFLOW:
            {
                AfxMessageBox("Memory Error: ERROR_BUFFER_OVERFLOW");
                break;
            }
            default:
            {
                
                break;
            }
        }//end switch
        bResult = TRUE;
    }
    
    
    BOOL erg =GetHostName();
    /*BOOL erg2 =m_Adapter->IsEmpty();
    if( erg2 != TRUE && bResult == TRUE && erg == TRUE)
    {
        m_Adapter->RemoveAll();
    }*/

    POSITION Pos = m_Adapter.GetHeadPosition();
    pAdapter = pAdapterInfo;
    do
    {
        m_AdapterData.m_strDescription.Format("%s",pAdapter->Description); //Description;
        
        //DHCP Controller
        if(pAdapter->DhcpEnabled)
        {
            m_AdapterData.m_strDHCP.Format("%s", pAdapter->DhcpServer.IpAddress.String);    
        }
        else
        {
            m_AdapterData.m_strDHCP="N/A";
        }
        
        //Standart Gateway
        m_AdapterData.m_strGateway.Format("%s",pAdapter->GatewayList.IpAddress.String);
        //Secondary Gateway
        
        //m_AdapterData->m_strGateway2 = pAdapterInfo->GatewayList.next;
        //m_AdapterData->m_strGateway2 = pAdapterInfo->GatewayList.IpAddress
        
        //IP-Adresse
        m_AdapterData.m_strIpAdress.Format("%s",pAdapter->IpAddressList.IpAddress.String);
        
        //Mac Addresse in String
        m_AdapterData.m_strMacAddress.Format("%02X:%02X:%02X:%02X:%02X:%02X"    ,pAdapter->Address[0]
                                                                                ,pAdapter->Address[1]
                                                                                ,pAdapter->Address[2]
                                                                                ,pAdapter->Address[3]
                                                                                ,pAdapter->Address[4]
                                                                                ,pAdapter->Address[5]);
        //IP-maske
        m_AdapterData.m_strSubnetMask.Format("%s",pAdapter->IpAddressList.IpMask.String);
        //NetType
        m_AdapterData.m_strType= pAdapter->Type;
                                                                                
        m_Adapter.AddTail( m_AdapterData);
        
        pAdapter = pAdapter->Next;
    }while(NULL != pAdapter);
    
    return bResult;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: