Когда биндишся на нулевой порт, то система делает привзяку сокета к первому свободному порту. А как бы его выцепить, и откуда?L&MC
struct sockaddr_in addr;
socklen_t addrlen;getsockname(s, &addr, &addrlen);
int port = ntohs(addr.sin_port);
P.S. Естественно, нужно ещё добавить проверку ошибок.
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