Dobry den,
jak lze udelat to, aby ma aplikace naslouchala na jednom portu na obou protokolech (IPv4/IPv6)? Kdyz to udelam klasickou cestou, tak mi u bind() hlasi chybu "Address already in use".
Demonstrace:
...
struct sockaddr_in x;
x.sin_family = AF_INET;
x.sin_port = htons(123);
x.sin_addr.s_addr = INADDR_ANY;
struct sockaddr_in6 y;
y.sin6_family = AF_INET6;
y.sin6_port = htons(123);
y.sin6_addr = in6addr_any;
int sx = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
int sy = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
bind(sx, (struct sockaddr *)&x, sizeof(x)); perror("bind4");
bind(sy, (struct sockaddr *)&y, sizeof(y)); perror("bind6");
...
$ ./run
bind4: Success
bind6: Address already in use