• # Hmmm

    Posté par  . Évalué à 3.

    Y a moyen que tu nous donnes un exemple car perso je trouve que ta question veut rien dire.
    • [^] # mes excuses

      Posté par  (site web personnel) . Évalué à 1.

      ouais c'est vrai

      bah par exemple:

      fonction("http://linuxfr.org/forums/19/5686.html(...)")

      me renvoit:
      "linuxfr.org"
      • [^] # Re: mes excuses

        Posté par  . Évalué à 2.

        Ok.
        Donc en C de base, rien n'existe evidemment :) tu peux essayer à coup de strtok de "splitter" ta chaine mais tu risques d'avoir un truc sale, de plus si je ne me trompe pas, il est fortement déconseillé d'utiliser cette fonction.
        Sinon, tu peux te tourner vers une lib.
        Un rapide apt-cache search me donne la libcurl ou la libwww ... après je ne sais pas si elle vont avoir LA fonction que tu recherches, à toi de fouiller la doc.
        Sinon, il te reste la fameuse libpcre pour faire des jolies expressions régulières ...
        • [^] # Re: mes excuses

          Posté par  . Évalué à 1.

          Ou faire une recherche de la position du premier /, puis position du / suivant ou ":" (prendre le premier qui se présente), et extraire la sous-chaine entre les 2 bornes.
          • [^] # Re: mes excuses

            Posté par  . Évalué à 2.

            Attention, yaunbug, il faut lire les 2 premiers / au début et pas uniquement le premier. Pas un ne l'a relevé, vous dormez tous ou quoi ?

            (oui, je sais c'est par là -->[], poussez pas)
  • # GNet lib

    Posté par  (site web personnel) . Évalué à 1.

    http://gnetlibrary.org/docs/gnet-uri.html(...)

    Bon après si tu as pas besoin de la libgnet plus que ça tu peux aussi le faire toi-même, ça droit pas être très compliqué à faire...

    https://damien.pobel.fr

    • [^] # Re: GNet lib

      Posté par  . Évalué à 2.

      #include <stdio.h>
      #include <string.h>
      #include <alloca.h>
      
      #define METHOD_SIZE     (sizeof("http://") - 1)
      int get_host(const char *url, unsigned int len, char **res, unsigned int size)
      {
              unsigned int i;
      
      
              /* chaine vide */
              if ( 0 > len )
                      return 0;
      
              /* chaine ne contenant meme pas la methode ... */
              if ( METHOD_SIZE > len )
                      return 0;
      
              for ( i = METHOD_SIZE; i < len; i++ ) {
                      if ( '/' == url[i] )
                              break;
              }
      
              /* pas assez de memoire pour contenir le resultat */
              if ( size < len )
                      return -1;
      
              len = i - METHOD_SIZE;
              memcpy(*res, &url[METHOD_SIZE], len );
              return len;
      }
      
      int main(int ac, char *av[])
      {
              char    *host = 0;
              int     len = 0;
      
              if ( ac < 2 )
                      return 1;
      
              host = (char *) alloca(32);
      
              len = get_host(av[1], strlen(av[1]), &host, 32);
              if ( 0 < len )
                      printf("host: %.*s\n", len, host);
              else
                      printf("ret: %d\n", len);
      
              return 0;
      }
      
  • # man gethostbyname

    Posté par  . Évalué à 1.

    Extrait du man gethostbyname


    #include <netdb.h>
    extern int h_errno;
    struct hostent *gethostbyname(const char *name);
    #include <sys/socket.h> /* pour avoir AF_INET */
    struct hostent *gethostbyaddr(const char *addr,
    int len, int type);


    Sinon, dans les deux sens, depuis le shell, tu utilises tout simplement :

    $ host
    • [^] # Erratum !

      Posté par  . Évalué à 1.

      Ok, j'm'a gourré, désolé.

      Il a fallu que je relise en détail le deuxième commentaire du journal pour saisir, moi aussi. Bon tant pis, c'est toujours une référence à connaître ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.