Когда я запускаю следующий код:Как позволить ядру выбрать номер порта в диапазоне (1024,5000) в программировании сокетов TCP
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);
Согласно розеткам, я должен получить номер порта в диапазоне от 1024 до 5000, но я получаю номера портов около 30 000.
Что мне делать?
C POSIX API, выводимый из вашего кода? Python: http://stackoverflow.com/questions/1365265/on-localhost-how-to-pick-a-free-port-number || Java: http://stackoverflow.com/questions/2675362/how-to-find-an-available-port || Shell: http://unix.stackexchange.com/questions/55913/whats-the-easiest-way-to-find-an-unused-local-port –