C'e' qualche funzione che permette di trovare l'ip di un server avendo il nome ???
Cioe' ho il nome del server (es. html.it) mi serve l'ip...
Se ho capito bene ti serve la stessa cos ache è servita a me giusto avantieri.Io ho risolto il problema a questo modo:
codice:
WORD wVersionRequested = MAKEWORD(1,1);
WSADATA wsaData;
CString szSite, szBuf;
m_ctrlSite.GetWindowText(szSite);
m_ctrFoundIPs.ResetContent();
//La casella era vuota
if(szSite.IsEmpty())
{
AfxMessageBox("Non hai specificato alcun sito");
return;
}
//Inizial l'uso di Ws2_32.dll da parte del prog e ne "negozia"
//la versione
if(WSAStartup( wVersionRequested, &wsaData ) != 0)
{
AfxMessageBox("Impossibile trovare una dll Winsock adatta");
WSACleanup();
return;
}
//Test sullo stato della conessione (evita l'apertura) di
//quella fastidiosa finestra di connessione a ogni pressione del
//pulsante.
LPDWORD lpdwFlags = NULL;
if(!InternetGetConnectedState(lpdwFlags,0))
{
AfxMessageBox("E' necessaria una connessione attiva\nper questa funzione");
return;
}
//Puntatore a una struttura che riceverà i dati
hostent *host;
//Ricava le informazioni richieste da un database di host
host = gethostbyname(LPCSTR(szSite));
//Fallimento
if(!host)
{ m_ctrFoundIPs.AddString("Impossibile trovare un IP");
WSACleanup();
return;
}
//Indirizzo non IPv4
if(host->h_length != 4)
{
AfxMessageBox("Indirizzo di tipo non supportato");
WSACleanup();
return;
}
//Aggiunge alla lista gli IP trovati
flag = FALSE;
for(int i = 0; host->h_addr_list[i]; i++)
{
szBuf.Format("%s",inet_ntoa(*( (struct in_addr *)host->h_addr_list[i])));
flag = TRUE;
m_ctrFoundIPs.AddString(szBuf);
}
//Termina l'uso di Ws2_32.dll.
WSACleanup();
Si tratta del codice di un metodo di una classe MFC quindi se non stai programmando con questo framework dovrai fare i dovuti adattamenti,ad esempio printf o messagebox al posto di afxmessagebox,tuttavia funge.Il codice prende da una casella di testo la stringa rappresnatnte il nome del sito, controlla se è vuota,controlla se esiste una connessione attiva e se tutto ciò non è ricava tutti gli indirizzi IP associati a tale nome (possono essere più d'uno) e li inserisce in un controllo lista.
Credo dovrai includere gli header wininet.h e winsock2.h.
Funziona bene,l'ho provato
Spero di esserti stato utile,ciao