Newsgroup: it.comp.programmare.win32
Titolo: Ricavare un IP!

Ciao a tutti, programmo in VC++!
Qualcuno di voi sa come si fa a ricavare l'indirizzo IP del computer
in uso? Una piccola routine, un tutorial in rete o magari qualcuno che
l'ha già fatto! Devo inserirlo in un campo testo in una finestra
dialog!
Sto incasinato, aiutatemi....

 ha scritto nel messaggio
news:vqig7t0tov40fmhpm...@4ax.com...


Tarcisio ha scritto:

Risposta molto precisa e puntuale direi...
ma visto che sono buono:
Dovresti aver prima inizializzato le WinSocket... *
   if (gethostname(servername, 120)!= SOCKET_ERROR)
 {
 struct hostent* phe = gethostbyname(servername);
    if (phe != 0)
 {
    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));
           * a questo punto la stringa restituita dalla funzione 'inet_ntoa(addr)' contiene
l'IP
    *   questo for è dovuto al fatto che un computer che fa da gateway potrebbe avere più
indirizzi IP assegnati.
  }
 }
 }
* come inizializzare le WinSock per chi non lo sapesse
WSADATA wsadata
WSAStartup (0x0202, &wsadata);
Quando si è finito di usarle fare:
WSACleanup();
ricordare di linkare il file ws2_32.lib e includere l'header winsock.h o winsock2.h
--
+----------- PMSoftware -------------------------+
# Tutorial:  
http://pmsoftware.tripod.com
        #
# Download:  
http://digilander.iol.it/pmsoftware
 #
°e prossimamente un tutorial su come fare la Firma....

   if (gethostname(servername, 120)!= SOCKET_ERROR)
--------------
servername? Io devo sapere l'IP del mio pc o cmq, l'IP del pc su cui
sta girando l'applicazione! Come faccio?
Grazie lo stesso cmq...
--------------


 writes:
DP>    if (gethostname(servername, 120)!= SOCKET_ERROR)
DP>  {
DP>  struct hostent* phe = gethostbyname(servername);
DP>     if (phe != 0)
DP>  {
Scusa la pigrizia (potrei provare), ma se il computer non ha un nome
registrato da un nameserver ?
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: sierra alfa india november tango AT echo november golf DOT india tango

> if (gethostname(servername, 120)!= SOCKET_ERROR)
R> --------------
R> servername? Io devo sapere l'IP del mio pc o cmq, l'IP del pc su cui
R> sta girando l'applicazione! Come faccio?
R> Grazie lo stesso cmq...
servername è un puntatore a char. cahr *servername;


registrato da un nameserver ?
Appunto!

Restore ha scritto:

Ogni computer può essere server comunque...
e poi ogni utente di Windows ha assegnato un nome al computer al momento dell'installazione.
e gethostname restituirà quel nome, bypassando la normale ricerca via DNS.


 writes:
a> puoi usare il metodo sopra, oppure questo che ti da piu' informazioni
a> sulle interfacce di rete sul tuo computer...
a> 		INTERFACE_INFO	InterfaceList[MAX_INTERFACES_NUM];
a> 				SOCKET	sd;
a>     sd = WSASocket (AF_INET, SOCK_DGRAM, 0, 0, 0, 0);
a>     WSAIoctl (sd, SIO_GET_INTERFACE_LIST, 0, 0, &InterfaceList,	
a>              sizeof(InterfaceList), &nBytesReturned, 0, 0) ;
Caruccio forte. A naso (sono sempre pigro, ed inoltre non ho mai avuto
una macchina con connessione dial-up :) ) questo ti permette di capire
se sei  connesso o no,  in quanto se  non sei connesso  dovresti avere
solo l'interfaccia di loopback up...
