9 static int16_t
10 get_local_port()
11 {
12 int sock = socket(AF_INET, SOCK_STREAM, 0);
13 if(sock < 0){
14 return 0;
15 }
16
17 struct sockaddr_in serv_addr;
18 bzero((char *) &serv_addr, sizeof(serv_addr));
19
20 serv_addr.sin_family = AF_INET;
21 serv_addr.sin_addr.s_addr = INADDR_ANY;
22 std::cout<<INADDR_ANY<<std::endl;
23 serv_addr.sin_port = 0;
24
25 if(bind(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
26 return 0;
27 }
28
29 socklen_t len = sizeof(serv_addr);
30 if(getsockname(sock, (struct sockaddr *)&serv_addr, &len) == -1){
31 return 0;
32 }
33 if( close (sock) < 0)
34 {
35 return 0;
36 }
37 return ntohs(serv_addr.sin_port);
38 }
10 get_local_port()
11 {
12 int sock = socket(AF_INET, SOCK_STREAM, 0);
13 if(sock < 0){
14 return 0;
15 }
16
17 struct sockaddr_in serv_addr;
18 bzero((char *) &serv_addr, sizeof(serv_addr));
19
20 serv_addr.sin_family = AF_INET;
21 serv_addr.sin_addr.s_addr = INADDR_ANY;
22 std::cout<<INADDR_ANY<<std::endl;
23 serv_addr.sin_port = 0;
24
25 if(bind(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
26 return 0;
27 }
28
29 socklen_t len = sizeof(serv_addr);
30 if(getsockname(sock, (struct sockaddr *)&serv_addr, &len) == -1){
31 return 0;
32 }
33 if( close (sock) < 0)
34 {
35 return 0;
36 }
37 return ntohs(serv_addr.sin_port);
38 }