Ich erhalte ein ungültiges Fehlerargument, wenn ichInvalid argument Fehler während für IPv6-Socket verbindet Aufruf
connect(m_socket, (struct sockaddr *)&m_socket_addrv6, sizeof(struct sockaddr));
m_socket_addrv6 nenne, ist eine sockaddr_in6 Struktur. Von gdb, so sieht m_socket_addrv6 aus.
>{sin6_len = 0 '\0', sin6_family = 28 '\034', sin6_port = 20480, sin6_flowinfo = 0, sin6_addr = {__u6_addr = {
__u6_addr8 = "�\200\000\000\000\000\000\000\002PV���\000n", __u6_addr16 = {33022, 0, 0, 0, 20482, 65366, 48126, 28160},
__u6_addr32 = {33022, 0, 4283846658, 1845541886}}}, sin6_scope_id = 0}.
Ähnliche Code funktionierte für IPv4. Gibt es etwas, das ich für v6 vermisse?
Versuchen Sie 'sizeof (m_socket_addrv6)' stattdessen. Sie sagen, verbinden Sie die Struktur, die Sie übergeben, ist es kleiner als es tatsächlich ist. –
@PaulRooney danke! das hat den Fehler beseitigt. – aupreti
Funktioniert die Verbindung? 'sin6_scope_id' ist 0, obwohl die Adresse eine Link-lokale Adresse zu sein scheint! –