View Full Version : [C]Rilevare Indirizzo IP
Uso linux Ububtu, vorrei conoscere l'indirizzo IP di un host (anche del mio computer che usa un indirizzo dinamico). Ho provato ad usare la funzione getipnodebyname ma non mi compila il sorgente ecco l'errore: assignment makes pointer from integer without a cast
/tmp/ccOjuHC8.o: In function `main':
cftp.c:(.text+0x2a): undefined reference to `getipnodebyname'
collect2: ld returned 1 exit status
Sapete dirmi qualcosa?
sei sicuro di avere incluso le librerie nesessarie?
questa è la manpage per la funzione che ti interessa
http://www.cs.biu.ac.il/cgi-bin/man?getipnodebyname+3SOCKET
questa è la manpage per la funzione che ti interessa
http://www.cs.biu.ac.il/cgi-bin/man?getipnodebyname+3SOCKET
Ho aggiunto tutte le librerie, è una cosa strana. Conoscete qualche funzione alternativa?
Dimenticavo ho un modem router Telit AR520 (quello che distribuisce Libero ) crea qualche intoppo?
Ho risolto il problema, dovevo converire l'indirizzo con inet_ntop, ma come faccio a sapere il mio indirizzo IP di connessione ad internet, se chiamo gethostbyname("localhost") mi da 127.0.0.1 ovvero l'IP locale.
prova a inserire al posto di localhost il tuo hostname
(non so se funziona, però è la prima cosa che mi viene in mente)
prova a inserire al posto di localhost il tuo hostname
(non so se funziona, però è la prima cosa che mi viene in mente)
E' lo stesso dato che in /etc/hosts così è impostato
jappilas
28-10-2006, 12:25
Ho risolto il problema, dovevo converire l'indirizzo con inet_ntop, ma come faccio a sapere il mio indirizzo IP di connessione ad internet, se chiamo gethostbyname("localhost") mi da 127.0.0.1 ovvero l'IP locale.
siccome sei dietro router, le macchine interne alla rete non conoscono l' indirizzo con cui escono su internet: l' IP lo sa il router, in quanto è il suo indirizzo sull' interfaccia WAN ottenuto tramite DHCP
se il telit ha un' interfaccia di gestione web based, dovrebbe esserci un pannello sinottico da cui recuperarlo
siccome sei dietro router, le macchine interne alla rete non conoscono l' indirizzo con cui escono su internet: l' IP lo sa il router, in quanto è il suo indirizzo sull' interfaccia WAN ottenuto tramite DHCP
se il telit ha un' interfaccia di gestione web based, dovrebbe esserci un pannello sinottico da cui recuperarlo
Si l'interfaccia di gestione web based è presente, ma in C come faccio a recuperlo, sembra una cosa così banale...
jappilas
28-10-2006, 21:41
Si l'interfaccia di gestione web based è presente, ma in C come faccio a recuperlo, sembra una cosa così banale...
uhm, non saprei... magari con un programmino che si connetta all' indirizzo del gateway, si logghi sulla webconsole e parsi l' html ricevuto per estrarre la quaterna IP scritta nel campo WAN address? :D
(posto che nella pletora di protocolli ausiliari e diagnostici che viaggiano su ip tra router e router e tra router e host un modo quasi sicuramente ci sarà anche se ora non mi viene in mente... :stordita: )
uhm, non saprei... magari con un programmino che si connetta all' indirizzo del gateway, si logghi sulla webconsole e parsi l' html ricevuto per estrarre la quaterna IP scritta nel campo WAN address?
Geniale come cosa!!! :D
Certo che se il router non ha interfaccia web la vedo un po' dura.
Poi se ha l'interfaccia web non credo che l'accesso sia garantito a tutti.
Conoscere l'indirizzo IP con cui un router esce su internet non è così semplice.
L'unico modo che conosco io è quello di utilizzare il protocollo STUN.
http://en.wikipedia.org/wiki/STUN
Sì lo so. Sembra brutto ma non lo è. Alla fine basta inviare un pacchetto UDP particolare ad un server STUN pubblico e questo magicamente ti ritorna un pacchetto UDP che contiene il tuo indirizzo pubblico.
Poi non so se esistono altri metodi. Probabilmente sì.
Ciao ciao.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.