23/03/10 20:41
robrock80
Salve a tutti. Ho trovato il seguente codice su internet per ottenere l'indirizzo IP della macchina sulla quale lo si esegue
Seccome restituisce più di un IP e tutti validi, mi chiedevo: il primo IP è sempre quello principale della macchina?
#include <iostream> #include <winsock2.h> using namespace std; int doit(int, char **) { char ac[80]; if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR) { cerr << "Error " << WSAGetLastError() << " when getting local host name." << endl; return 1; } cout << "Host name is " << ac << "." << endl; struct hostent *phe = gethostbyname(ac); if (phe == 0) { cerr << "Yow! Bad host lookup." << endl; return 1; } for (int i = 0; phe->h_addr_list[i] != 0; ++i) { struct in_addr addr; memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr)); cout << "Address " << i << ": " << inet_ntoa(addr) << endl; } return 0; } int main(int argc, char *argv[]) { WSAData wsaData; if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) { return 255; } int retval = doit(argc, argv); WSACleanup(); return retval; }
Seccome restituisce più di un IP e tutti validi, mi chiedevo: il primo IP è sempre quello principale della macchina?
aaa