Как найти IP-адрес Клиента подключенным к Серверу?

Лучшая реализация? Это - трудный вопрос, потому что он зависит от шаблона использования.

А почти для всех случаев разумная хорошая реализация была предложена в [1 123] Josh Bloch Эффективный Java в Объекте 8 (второй выпуск). Лучшая вещь состоит в том, чтобы искать его там, потому что автор объясняет там, почему подход хорош.

короткая версия А

  1. Создает int result и присваивается ненулевой значение.

  2. Для [1 125] каждое поле f, протестированное в equals() метод, вычислите хэш-код c:

    • , Если поле f boolean: вычислите (f ? 0 : 1);
    • , Если поле f byte, char, short или int: вычислите (int)f;
    • , Если поле f long: вычислите (int)(f ^ (f >>> 32));
    • , Если поле f float: вычислите Float.floatToIntBits(f);
    • , Если поле f double: вычислите Double.doubleToLongBits(f) и обработайте возвращаемое значение как каждое длинное значение;
    • , Если поле f объект : Используйте результат hashCode() метод или 0 если f == null;
    • , Если поле f массив : посмотрите каждое поле как отдельный элемент и вычислите значение хэш-функции в рекурсивный вид и объедините значения, как описано затем.
  3. Объединение значение хэш-функции c с [1 121]:

    result = 37 * result + c
    
  4. Возврат result

Это должно привести к надлежащему распределению значений хэш-функции для большинства ситуаций с использованием.

26
задан Kevin Boyd 3 December 2009 в 15:00
поделиться

3 ответа

Я считаю, что вы хотите вместо этого использовать удаленный адрес :

csocket.getRemoteSocketAddress().toString();
51
ответ дан 28 November 2019 в 06:25
поделиться

Думаю, вы ищете метод getInetAddress объекта Socket .

13
ответ дан 28 November 2019 в 06:25
поделиться

Вместо этого используйте getRemoteSocketAddress () .

4
ответ дан 28 November 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: