es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Libevent – Conexión IPv6

Dime por favor, estoy tratando de averiguar si Liebevent puede usar ipiv6.
Actualmente estoy leyendo sobre Bufferevents: conceptos y fundamentos: Bufferevents: conceptos y fundamentos

Ahí dice que:

Si el socket de bufferevent aún no está conectado, puedes lanzar una nueva conexión.

bufferevent_socket_connect(struct bufferevent *bev, struct sockaddr *address, int addrlen);

Los argumentos de dirección y addrlen son los mismos que para la llamada estándar connect().

Estoy confundido por la estructura – sockaddr, ya que no tiene campos para IPv6.

Y así no puedo averiguar cómo ingresar información sobre IPv6?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según la información de la documentación de libevent, parece que la estructura sockaddr utilizada en la función bufferevent_socket_connect no tiene campos específicos para direcciones IPv6. Sin embargo, IPv6 aún se puede utilizar con libevent utilizando la estructura de datos apropiada y realizando una conversión a la estructura sockaddr.

    Por ejemplo, puedes utilizar la estructura sockaddr_in6 para direcciones IPv6:

    struct sockaddr_in6 sin6;
    memset(&sin6, 0, sizeof(sin6));
    sin6.sin6_family = AF_INET6;
    sin6.sin6_port = htons(PORT);
    inet_pton(AF_INET6, IPV6_ADDR, &sin6.sin6_addr);
    

    Esto crea una estructura sockaddr_in6 con la familia (IPv6), número de puerto y dirección IP adecuados. Luego puedes convertir esta estructura a una estructura sockaddr y pasarla a la función bufferevent_socket_connect:

    bufferevent_socket_connect(bev, (struct sockaddr*)&sin6, sizeof(sin6));
    

    Al utilizar las estructuras de datos apropiadas y realizar las conversiones necesarias a sockaddr, libevent se puede utilizar tanto con direcciones IPv4 como IPv6.

Comments are closed.