Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Trovare ip pubblico in c++

    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

  2. #2
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    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();

  3. #3
    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

  4. #4
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    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

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Infatti ... ad esempio interroga il sito

    http://www.myip.it/

    Ovviamente non e' semplicissimo ...

  6. #6
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    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

  7. #7
    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

  8. #8
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    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

  9. #9
    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

  10. #10
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.