1 #include <sys/socket.h>
2 #include <netinet/in.h>
3 #include <netinet/tcp.h>
9 int main(int argc, char *argv[]) {
11 struct sockaddr_storage sa;
15 if ((s = socket(PF_INET6, SOCK_STREAM, 0)) < 0) {
16 if (errno == EAFNOSUPPORT)
17 s = socket(PF_INET, SOCK_STREAM, 0);
25 if (listen(s, 2) < 0) {
31 if (getsockname(s, (struct sockaddr*) &sa, &salen) < 0) {
32 perror("getsockname()");
36 if (((struct sockaddr*) &sa)->sa_family == AF_INET)
37 port = ((struct sockaddr_in*) &sa)->sin_port;
39 port = ((struct sockaddr_in6*) &sa)->sin6_port;
41 printf("Selected port number %u\n", ntohs(port));
43 /* ... hic sunt leones ... */