IPv6 Connect



  • Hi, ich habe hier:
    http://download.oracle.com/javase/1.5.0/docs/guide/net/ipv6_guide/index.html

    das gefunden und bin leicht verwirrt.

    Modified IPv6-aware C code:
    
        struct addrinfo *res, *aip;
        struct addrinfo hints;
        int sock = -1;
        int error;
    
        /* Get host address. Any type of address will do. */
        bzero(&hints, sizeof(hints));
        hints.ai_flags = AI_ALL|AI_ADDRCONFIG;
        hints.ai_socktype = SOCK_STREAM;
    
        error = getaddrinfo(hostname, servicename, &hints, &res);
        if (error != 0) {
           (void) fprintf(stderr,
              "getaddrinfo: %s for host %s service %s\n",
              gai_strerror(error), hostname, servicename);
           return (-1);
        }
        /* Try all returned addresses until one works */
        for (aip = res; aip != NULL; aip = aip->ai_next) {
           /*
           * Open socket. The address type depends on what
           * getaddrinfo() gave us.
           */
           sock = socket(aip->ai_family, aip->ai_socktype, aip->ai_protocol);
           if (sock == -1) {
              perror("socket");
              freeaddrinfo(res);
              return (-1);
           }
    
        /* Connect to the host. */
        if (connect(sock, aip->ai_addr, aip->ai_addrlen) == -1) {
           perror("connect");
           (void) close(sock);
           sock = -1;
           continue;
        }
        break;
        }
           freeaddrinfo(res);
    

    wo wird dabei der port der verbindung bestimmt?
    und geht das überhaupt so? ich wäre jetzt einen ansatz über sockaddrin6 gefahren



  • servicename == Port als String



  • Vielen Dank !!!


Anmelden zum Antworten