Получить IP-адрес из дескриптора сокета?

Я открыл сервер сокетов TCP (я опустил несколько вещей, он взят отсюда

sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) 

Возможно ли получить IP-адрес сервера из sockfd? Если нет, где я должен смотреть?

EDIT: Я хочу знать адрес сервера (это до того, как какой-либо клиент подключится).

Если вы хотите узнать, кто находится на другом конце вашего сокета, вы можете использовать getpeername в Linux. getsockname скажет вам, кто вы. Вы решаете, какой адрес вы хотите, чтобы ваш сервер сидел первоначально, хотя во время привязки .

Вы также можете найти этот SO-вопрос полезным: привязать сокет к сетевому интерфейсу

И книга «Unix Network Programming, vol 1», автор W. Richard Stevens.

Вы не можете использовать сокет, чтобы получить адрес сервера до того, как клиент подключится, потому что он неизвестен.

В принципе, хост может иметь несколько IP-адресов. IP-адрес, используемый для подключения к серверу, относится к интерфейсу, через который было получено соединение. Пока не приходит соединение, неизвестно.
Даже если у вас есть только один IP, соединения могут поступать из машины, и в этом случае адрес будет 127.0.0.1 .

Таким образом, слушающий сокет не имеет информации об IP.
Вам нужно будет найти, какие интерфейсы у машины есть, и каковы их IP-адреса.

Адрес сервера зависит от вас.

Зависит от того, какие параметры передаются функции bind() .

Вы можете указать single ip или связать свой сокет с каждым адресом вашего хоста.

Посмотрите на страницу Bind

Адрес сервера – тот, который был передан успешному вызову bind() (как показано в источнике, который вы связали).