Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353

    C - Indirizzo ip da connessione tcp

    avrei bisogno di ricavare l' ip di una macchina remota tramite connessione tcp
    come si può fare? (per Unix)
    grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Credo di non aver capito

    Se ti connetti alla macchina remota, significa che hai il suo ip.
    Se la macchina remota si connette a te, il suo ip è contenuto nella struttura che ti ritorna dalla accept.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    intanto grazie,
    dovendo creare un piccolo dns si deve inserire il nome dell' hostname e da questo risalire all' ip,
    è questo il problema.Da dove si può "ricavare"?Esistono funzioni in c per farlo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Per risolvere l'indirizzo puoi usare gethostbyname o getaddrinfo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    mi potete fare un esempio pratico di come risolvere questa situazione?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da CodiceProg
    mi potete fare un esempio pratico di come risolvere questa situazione?
    google ti è amico: ti hanno indicato la funzione, questo è il primo result e questo è il secondo result di una ricerca su google con parole chiave

    getHostByName C example

    e penso che in molti abbiano scritto e testato esempi simili a questo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    ho trovato questa funzione,restituisce l' ip,può andare bene?
    codice:
    int lookup_host (const char *host,char *indip)
    {
      struct addrinfo hints, *res;
      int errcode;
      char addrstr[100];
     
      void *ptr;
    
      memset (&hints, 0, sizeof (hints));
      hints.ai_family = PF_UNSPEC;
      hints.ai_socktype = SOCK_STREAM;
      hints.ai_flags |= AI_CANONNAME;
    
      errcode = getaddrinfo (host, NULL, &hints, &res);
      if (errcode != 0)
        {
          printf("Host non presente\n");
          return -1;
        }
    
      //printf ("Host: %s\n", host);
      inet_ntop (res->ai_family, res->ai_addr->sa_data, addrstr, 100);
      int y=0;
      while (res){
          y++;
          inet_ntop (res->ai_family, res->ai_addr->sa_data, addrstr, 100);
    
          switch (res->ai_family)
            {
            case AF_INET:
              ptr = &((struct sockaddr_in *) res->ai_addr)->sin_addr;
              break;
              
       case AF_INET6:
              ptr = &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr;
              break;
       
            }
       
          inet_ntop (res->ai_family, ptr, addrstr, 100);
          //printf ("IPv%d address: %s (%s)\n", res->ai_family == PF_INET6 ? 6 : 4,
                 // addrstr, res->ai_canonname);
          if(y==1) strcpy(indip,      addrstr);
         
          res = res->ai_next;
           
        }
      //printf("---->%s\n",indip);
      return 0;
    }

  8. #8
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    l'utilità di questi programmi è sempre più che dubbia senza qualche conoscenza di rete, almeno riguardo il traceroute, senza contare che con il termine IP si indicano genericamente tante informazioni contemporaneamente, anche i DNS sono rappresentati all'esterno da IP, ma non è neanche detto che tu riesca a raggiungerli.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    provala in un semplice main e vedi se funziona, quello è l'unico modo per vedere se una funzione va bene oppure no.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    funzionare funziona,dando un host restituisce l' ip,ma lo preleva tramite connessione tcp?insomma questa funzione esegue ciò che mi serve?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.