Bind () изменяет sin_port в C? - PullRequest
       59

Bind () изменяет sin_port в C?

1 голос
/ 16 марта 2020

Может ли функция bind() в linux изменить свой аргумент? Я спрашиваю об этом, потому что sin_port из 0 означает, что ОС выберет порт, и я хотел бы получить этот порт после этого вызова.

1 Ответ

3 голосов
/ 16 марта 2020

Нет, это не изменяет аргумент. Вместо этого вы используете getsockname после привязки, чтобы узнать, какой порт вы получили.

Вы также можете использовать getsockname после connect, чтобы получить как локальное назначение порта , так и локальный адрес. (если у вас более одного адреса), соответствующий маршруту на удаленный хост. Это работает даже с UDP, где connect фактически не отправляет никаких пакетов, а только логически связывает адреса.

...