IP-адрес / MAC клиента - PullRequest
       4

IP-адрес / MAC клиента

1 голос
/ 08 августа 2011

Можно ли получить IP-адрес клиентского компьютера от sockaddr.

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

Я предполагаю, что клиент находится за некоторыми прокси / маршрутизаторами и не подключен напрямую к серверу.

Ответы [ 2 ]

3 голосов
/ 08 августа 2011

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

  • Устройства IPv4 NAT (часто используемые в корпоративных сетях) скрывают IP-адрес клиента и вместо этого предоставляют адрес устройства NAT.
  • перевод с 6 на 4. Если клиент является собственным клиентом, поддерживающим только протокол IPv6, ваш сервер IPv4 увидит адрес IPv4 шлюза 6–4, который обеспечивает подключение по протоколу IPv4.
  • Прокси-серверы, в которых клиент не подключен напрямую к Интернету, а подключается к прокси-серверу, который выполняет запросы от имени сервера. В этом случае сервер увидит адрес прокси-сервера.

Если вам нужен IP-адрес клиентского компьютера, клиент должен будет отправить его как данные на сервер. Обратите внимание, что нет никакой гарантии, что адрес, который вы получите таким образом, является реальным. Даже если он настоящий, он не может быть гарантированно уникальным (многие корпоративные сети используют адреса из серии 192.168.X.X, зарезервированные для внутреннего использования). Также маловероятно, что вы не сможете подключиться к клиенту по его внутреннему адресу.

0 голосов
/ 08 августа 2011

Отметьте этот ответ на тот же вопрос (если я правильно понимаю ваш вопрос) Получение адреса IPV4 из структуры sockaddr

socket.h состояния:

int accept (int socket, struct sockaddr *address,
                                 socklen_t *address_len);

адрес: либо нулевой указатель, либо указатель на структуру sockaddr, в которой будет возвращен адрес соединительного сокета.

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