C/Visual C - socket udp ipv6

 
Vista:

socket udp ipv6

Publicado por Ston (1 intervención) el 15/09/2001 07:01:57
estoy probando socket udp con ipv6, tengo un problema con el sendto..
alguien tiene algun url que hable de socket udp en ipv6 ??
aqui esta la sentencia que uso de sendto:

sendto(udp_socket,NULL,0,0,(void *)&fuck,sizeof(fuck));
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problemas con sendto en socket UDP con IPv6

Publicado por Alejandro (913 intervenciones) el 15/10/2024 20:03:00
Parece que estás teniendo problemas con la función `sendto` al trabajar con sockets UDP en IPv6. Aquí hay algunas sugerencias y recursos que podrían ayudarte:

1. Verifica la dirección y el tamaño del buffer:
Asegúrate de que la dirección que estás pasando a `sendto` (en tu caso, `fuck`) esté correctamente inicializada y que el tamaño del buffer que estás enviando no sea cero. Si estás enviando `NULL` como buffer, eso podría ser un problema.

2. Ejemplo de uso de sendto:
Aquí tienes un ejemplo básico de cómo usar `sendto` con sockets UDP en IPv6:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
 
int main() {
    int udp_socket;
    struct sockaddr_in6 server_addr;
    const char *message = "Hola, mundo!";
 
    // Crear socket UDP
    udp_socket = socket(AF_INET6, SOCK_DGRAM, 0);
    if (udp_socket < 0) {
        perror("Error al crear el socket");
        return 1;
    }
 
    // Configurar la dirección del servidor
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin6_family = AF_INET6;
    server_addr.sin6_port = htons(12345); // Puerto
    inet_pton(AF_INET6, "::1", &server_addr.sin6_addr); // Dirección IPv6
 
    // Enviar mensaje
    ssize_t sent_bytes = sendto(udp_socket, message, strlen(message), 0,
                                 (struct sockaddr *)&server_addr, sizeof(server_addr));
    if (sent_bytes < 0) {
        perror("Error en sendto");
        close(udp_socket);
        return 1;
    }
 
    printf("Mensaje enviado: %s\n", message);
    close(udp_socket);
    return 0;
}

3. Recursos adicionales:
Aquí tienes algunos enlaces que pueden ser útiles para entender mejor el uso de sockets UDP con IPv6:

- Guía de sockets en C (https://beej.us/guide/bgpd/)
- Documentación de la API de sockets en Linux (https://man7.org/linux/man-pages/man2/socket.2.html)
- Ejemplo de sockets UDP en IPv6 (https://www.linuxhowtos.org/C_C++/socket.htm)

¡Buena suerte, Ston!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar