как получить IP-адрес клиента? - PullRequest
2 голосов
/ 22 января 2012

Я хочу знать, что как мы можем узнать IP-адрес клиента на стороне сервера в сокете (Java). Предположим, есть сервер «S» и 2 клиента «A» и «B». Клиент A отправляет мне (серверу) некоторую информацию, а Клиент B отправляет мне (серверу) некоторую другую информацию. Я должен хранить эту информацию, поступающую из A и B, в базу данных в разных таблицах. Как я могу различить запросы клиента A и B.?

Ответы [ 2 ]

8 голосов
/ 22 января 2012

Каждый сокет имеет метод getInetAddress(), который возвращает IP-адрес подключенного к нему клиента.

0 голосов
/ 25 декабря 2013

Другой ответ на ваш основной вопрос.Я просто хочу добавить, что есть некоторые обстоятельства, когда IP-адрес, который вы получаете, не однозначно определяет истинную конечную точку;т.е. ПК пользователя.

  • Если два пользователя используют одну и ту же систему для подключения;т. е. это многопользовательская система.

  • Если ПК пользователя находится за шлюзом NAT (поскольку он имеет частный / локальный IP-адрес сайта), то IP-адрес вы будетеget будет для шлюза.

  • Кроме того, адрес может быть каким-то образом подделан или взломан ...

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

Итак ...

Как я могу дифференцировать клиента Aа б запрос?

В любом из вышеперечисленных обстоятельств вы не можете различить A и B только по IP-адресу.Если вы посмотрите на соединения с A и B, когда оба соединения живы, у них будут разные номера удаленных портов.Но эти номера портов действуют только на время соединения.Однако при следующем подключении A или B A может использовать удаленный порт, который использовал B, или наоборот.

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