Salve, sono un programmatore c++..
vorrei sapere se c'è qualche funzione c++ per ricavare il proprio ip pubblico..
o se avete idea di come fare in un'altra maniera...
intanto grazie
saluti...
Salve, sono un programmatore c++..
vorrei sapere se c'è qualche funzione c++ per ricavare il proprio ip pubblico..
o se avete idea di come fare in un'altra maniera...
intanto grazie
saluti...
http://www.pnlug.org
int i;
char hname[100];
struct in_addr addr;
struct hostent *ip;
WSADATA wsaData;
WSAStartup(MAKEWORD(1, 1), &wsaData);
gethostname(hname, sizeof(hname));
printf ("Nome host: %s\n\n", hname);
ip = gethostbyname(hname);
printf ("Indirizzi IP:\n");
for (i = 0; ip->h_addr_list[i] != 0; i++)
{
memcpy(&addr, ip->h_addr_list[i], sizeof(struct in_addr));
printf("%d) %s\n", i+1, inet_ntoa(addr));
}
WSACleanup();
Si grazie infinite...
ma al di là che le parti a cui metto gli asterischi di fianco non mi vanno
int i;
char hname[100];
struct in_addr addr;
struct hostent *ip;
******WSADATA wsaData;
******WSAStartup(MAKEWORD(1, 1), &wsaData);
gethostname(hname, sizeof(hname));
printf ("Nome host: %s\n\n", hname);
ip = gethostbyname(hname);
printf ("Indirizzi IP:\n");
for (i = 0; ip->h_addr_list[i] != 0; i++)
{
memcpy(&addr, ip->h_addr_list[i], sizeof(struct in_addr));
printf("%d) %s\n", i+1, inet_ntoa(addr));
}
******WSACleanup();
Io necessito di uno script per LINUX che mi tropi l'ip pubblico, non quello locale...
questo mi dà come risultato solo 127.0.0.1
http://www.pnlug.org
liberopnlug il codice indicato vale per Windows.. per linux dovresti semplicente eliminare le righe incriminate.
Il codice di mamo139 ovviamente enumera unicamente gli ip delle interfacce locali e in nessun modo puo' trovare l'ip pubblico se si è dietro un router o generico gateway.
Purtroppo non c'è modo semplice... o si trova il modo di interrogare il router (ma qui il codice dipende fortemente dal router usato e quindi non è portabile) oppure, meglio, interroghi un server esterno alla rete che ti indichi da quale ip ha ricevuto la richiesta.
Leggi il REGOLAMENTO!
E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
Drugo
Infatti ... ad esempio interroga il sito
http://www.myip.it/
Ovviamente non e' semplicissimo ...
in alternativa all'uso di un server quale quello indicato da Oregon puoi crearti tu il servizio su uno spazio web che supporti un linguaggio server side come PHP (ne esistono di gratuti). La cosa è semplicissima.
In questo modo puoi far si che la risposta http del server contenga unicamente l'indirizzo ip e non una pagina complessa come quelle dei servizi già disponibili sul web. Così facendo eviti di impazzire con il parsing della pagina che tra l'altro può essere soggetta a cambiamenti che non sono sotto il tuo controllo.
Leggi il REGOLAMENTO!
E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
Drugo
Ok ottimo...ma come mi connetto tramite c++ ad una pagina php??
potrei aprire una socket, ma è necessario il server abbia una socket aperta...come faccio se no????
comunque io non chiedo modi semplici, dato quello che sto sviluppando non ritengo nulla sia semplice...
http://www.pnlug.org
ovviamente ogni server http ascolta sulla porta 80...
ti devi collegare alla porta 80, fare la richiesta http per la pagina in questione (se non sei pratico studia i rudimenti del protocollo http). In risposta ti viene ritornata la pagina contenente header http + contenuto. Il contenuto è quello che devi analizzare per ricavare l'ip.
Leggi il REGOLAMENTO!
E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
Drugo
Quindi se io faccio una paginetta php che cm echo mi dà solo l'ip desiderato, analizzando la pagina mi ricavo l'ip...giusto???
http://www.pnlug.org
esattamente... ovviamente il tuo programma C deve fare la giusta richiesta HTTP e deve analizzare una risposta HTTP... quest'ultima non è composta solo dall'IP che hai stampato con l'echo ma davanti a tutto presenta gli header http. Non so quanto sei pratico del protocollo... l'ho specificato nel caso non conoscessi la materia. Se ti servono delucidazioni chiedi pure.
Leggi il REGOLAMENTO!
E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
Drugo