C Получить IP для прослушивания сервера - PullRequest
3 голосов
/ 25 марта 2012

Я пишу клиент-серверную программу с использованием сокетов C. Я указываю, что сервер может прослушивать любой сетевой интерфейс, используя INADDR_ANY в sockaddr_in.sin_addr.s_addr. Это эквивалентно IP-адресу 0.0.0.0. Могу ли я получить реальный IP-адрес, который прослушивает сервер? (например, 192.168.1.100)

Ответы [ 2 ]

1 голос
/ 06 апреля 2012

Мне наконец-то удалось найти решение , которое работает .

Редактировать : ссылка не работает, см .: Ссылка на Интернет-архив .

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

1 голос
/ 26 марта 2012

Когда вы привязываете прослушивающий сокет к INADDR_ANY, сокет прослушивает все доступные локальные IP-адреса. Невозможно определить по сокету, какие IP-адреса он прослушивает. Если вам нужна эта информация, то вам придется перечислять локальные IP-адреса отдельно (в этом случае вы можете просто bind() каждый IP-адрес отдельно подключать к своему сокету, если вам нужно получить предварительно принятые данные привязки). Однако, как только accept() вернет установленное клиентское соединение, вы можете использовать getsockname() на принятом сокете, чтобы узнать, какой конкретный IP-адрес принял соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...