Allow client to bind on a random port

This commit is contained in:
Stanislas Michalak 2020-04-19 23:51:33 +02:00
parent bba56fc988
commit 4efe081084

View file

@ -53,6 +53,17 @@ void CSocket::Init ( const quint16 iPortNumber )
bool bSuccess; bool bSuccess;
if ( bIsClient ) if ( bIsClient )
{
if (iPortNumber == 0)
{
// If port number is 0, bind the client to a random available port.
UdpSocketInAddr.sin_port = htons ( iPortNumber );
bSuccess = ( ::bind ( UdpSocket ,
(sockaddr*) &UdpSocketInAddr,
sizeof ( sockaddr_in ) ) == 0 );
}
else
{ {
// Per definition use the port number plus ten for the client to make // Per definition use the port number plus ten for the client to make
// it possible to run server and client on the same computer. If the // it possible to run server and client on the same computer. If the
@ -73,6 +84,7 @@ void CSocket::Init ( const quint16 iPortNumber )
iClientPortIncrement++; iClientPortIncrement++;
} }
} }
}
else else
{ {
// for the server, only try the given port number and do not try out // for the server, only try the given port number and do not try out