Получить локальный IP-адрес с помощью Boost.Asio

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

1.

class Person {
   int SSN ; // gets initialized to zero by default 
}

2.

class PersonBetter {
  Integer SSN; //gets initialized to null by default
}

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

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

30
задан Benjamin 4 February 2014 в 10:49
поделиться

1 ответ

Если вы отредактируете свой файл /etc/hosts (это только для *nix, может работать и для windows... я не уверен), вы можете исправить эту проблему.

Внутри файла hosts вы найдете что-то вроде: (это Ubuntu, обратите внимание на 1.1)

127.0.0.1 localhost
127.0.1.1 yourPcName.yourNetwork.tld

если вы измените этот файл на

127.0.0.1 localhost
127.0.1.1 yourPcName.yourNetwork.tld
your.real.ip.here yourPcName

тогда имя хоста должно разрешиться правильно.

Одним из методов проверки правильности разрешения является команда "hostname -i", которая должна вывести ваш ip-адрес неправильно до смены хоста, а затем правильно после.

Конечно, это ужасное решение для динамических IP... эх.

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

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