Comment laisser le noyau choisir un numéro de port dans la plage (1024,5000) en programmation de socket TCP

Lorsque j'exécute le code suivant:

struct   sockaddr_in sin;
int addrlen;   
addrlen=sizeof(sin);   
memset(&sin, 0, sizeof(sin));  
sin.sin_family = AF_INET;  
sin.sin_addr.s_addr=inet_addr("123.456.789.112");  
sin.sin_port=htons(0); //so that the kernel reserves a unique port for us  
sd_server = socket(PF_INET, SOCK_STREAM, 0);  
bind(sd_server, (struct sockaddr *) &sin, sizeof(sin));  
getsockname(sd_server,(struct sockaddr*)&sin,&addrlen);  
port=ntohs(sin.sin_port); 
printf("port number = %d\n",port);

Selon les sockets, je dois obtenir un numéro de port compris entre 1024 et 5000, mais je suis de numéros de port autour de 30 000.
Que dois-je faire?

source d'informationauteur Anonymous