URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3808
[ Назад ]

Исходное сообщение
"Как вытащить порт, если биндишься на нулевой порт?"

Отправлено Lonely , 11-Янв-05 13:53 
Когда биндишся на нулевой порт, то система делает привзяку сокета к первому свободному порту. А как бы его выцепить, и откуда?

L&MC


Содержание

Сообщения в этом обсуждении
"Как вытащить порт, если биндишься на нулевой порт?"
Отправлено romanSA , 11-Янв-05 17:05 
struct sockaddr_in addr;
socklen_t addrlen;

getsockname(s, &addr, &addrlen);

int port = ntohs(addr.sin_port);

P.S. Естественно, нужно ещё добавить проверку ошибок.



"В общем система такова должна быть "
Отправлено Lonely , 12-Янв-05 11:27 
struct sockaddr_in addr;
socklen_t addrlen;

int sd = ...
bind(sd, &addr, sizeof(addr));

и потом, если после привязки нет ошибок, идет твой код

getsockname(s, &addr, &addrlen);

int port = ntohs(addr.sin_port);

PS: И будет счастье-с ... Так?

L&MC