Problemet er bare, jeg får nogle fejl i koden. Har copy pastet koden, for at sikre jeg ikke selv lavede fejl.
Denne kode f.eks:
#include <iostream>
#if defined(__linux__)
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
extern int h_errno;
#elif defined(_WIN32)
#include <winsock2.h>
#endif
using namespace std;
int main(int argc, char ** argv)
{
//Tjek om vi har fået vores parameter
if(argc != 2)
{
cout << "Brug: " << argv[0] << " <IP address|hostnavn>" << endl;
return 0;
}
#if defined(_WIN32)
//Under Windows skal WinSock initialiseres
WSADATA wsaData;
int err = WSAStartup(MAKEWORD(2,2),&wsaData);
if(err != 0)
{
cerr << "Kunne ikke initialisere WinSock." << endl;
return -1;
}
#endif
//Denne struktur kommer til at indeholde den konverterede adresse
struct in_addr adr;
struct hostent * entity;
//Konvertér
#if defined(__linux__)
int error = inet_aton(argv[1], &adr);
//Tjek om adressen kunne godkendes
if(error == 0)
#elif defined(_WIN32)
adr.S_un.S_addr = inet_addr(argv[1]);
//Tjek om adressen kunne godkendes
if(adr.S_un.S_addr == INADDR_NONE && string(argv[1]) != string("255.255.255.255"))
#endif
{
//Det er ikke en IP adresse. Se om det er et host navn
entity = gethostbyname(argv[1]);
}
else
{
//Det er en IP adresse. Slå op med gethostbyaddr
entity = gethostbyaddr((char*)&adr,sizeof(adr),AF_INET);
}
//entity er NULL hvis opslaget slog fejl
if(entity == NULL)
{
#if defined(__linux__)
switch(h_errno)
{
case HOST_NOT_FOUND:
cout << argv[1] << " blev ikke fundet." << endl;
break;
case NO_ADDRESS:
cout << argv[1] << " er et gyldigt navn men har ikke en IP adresse." << endl;
break;
case NO_RECOVERY:
cout << "Der skete en fejl på navne serveren." << endl;
break;
case TRY_AGAIN:
cout << "Der skete en midlertidig fejl på navne serveren. Prøv igen senere." << endl;
break;
}
#elif defined(_WIN32)
switch(WSAGetLastError())
{
case WSAENETDOWN:
cout << "Fejl i netværks komponenten." << endl;
break;
case WSAHOST_NOT_FOUND:
cout << argv[1] << " blev ikke fundet." << endl;
break;
case WSATRY_AGAIN:
cout << "Der skete en midlertidig fejl på navne serveren. Prøv igen senere." << endl;
break;
case WSANO_RECOVERY:
cout << "Der skete en fejl på navne serveren." << endl;
break;
case WSANO_DATA:
cout << argv[1] << " er et gyldigt navn men har ikke en IP adresse." << endl;
break;
case WSAEINPROGRESS:
cout << "WinSock kan ikke processere dit kald." << endl;
break;
}
#endif
}
else
{
int i = 0;
cout << "Officielt navn: " << entity->h_name << endl;
while(entity->h_aliases[ i ])
{
cout << "Alias " << (i+1) << ": " << entity->h_aliases[ i ] << endl;
i++;
}
i = 0;
while(entity->h_addr_list[ i ])
{
cout << "IP adresse " << (i+1) << ": " << inet_ntoa(*((struct in_addr*)entity->h_addr_list[ i ])) << endl;
i++;
}
}
#if defined(_WIN32)
err = WSACleanup();
if(err != 0)
{
cerr << "Kunne ikke release WinSock." << endl;
return -1;
}
#endif
return 0;
}
Der får jeg fejl ved linje:
25
42
48
53
76
111
117
Ved dem alle skriver den "undefined reference to "
Tak for svarene indtil videre