I have a client and a server applications. When the client wants to send a file I'm using a TCP connection. when I use a constant port number for the connection it works (The server receives the file).
I want to use a random port so I tried setting the port to 0.
my code is:
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = 0;
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
cout << "failed to bind with errno: "<< errno << endl;
exit(1);
}
The binding works but with port 0 instead of a random port as expected.
What am I doing wrong?
Well, problem solved. I added a call to getsocketname
if (getsockname(sockfd, (struct sockaddr *)&serv_addr, &len_inet) < 0){
cout << "failed to get hostname with errno: "<< errno << endl;
exit(1);
}