Какой тип данных я должен использовать для хранения IP-адреса? - PullRequest
0 голосов
/ 06 февраля 2012

Я вдруг только подумал об этом и застрял, решая, какой тип данных я должен использовать для хранения IP-адреса?

Я думал о NSString;Но если мне понадобится последняя цифра для идентификации, я должен использовать float или double?И это также другая проблема, так как, когда число с плавающей или двойной может иметь более 1 десятичной точки?

Я, вероятно, задаю вопрос неправильно, потому что я действительно не знаю, как это задать.

IP-адрес приходит в формате XML <IP>192.168.1.1</IP>.Есть идеи, как мне это сделать?

Ответы [ 5 ]

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

Использование NSString. Вы не собираетесь делать с ним арифметику. Если вам нужны отдельные компоненты, вы можете использовать NSArray, но NSString хорошо послужит вам просто для хранения IP-адреса.

В ответ на ваши потребности вы всегда можете получить последний символ в вашей строке, используя метод NSString:

NSString *lastCharacter = [ip_string substringFromIndex: [ip_string length] - 1];

Где ip_string - строка, содержащая IP-адрес.

Изменить в ответ на комментарий:

Код Логана хранит каждый элемент в IP-адресе, разделенный точкой в ​​массиве. Поэтому, если IP-адрес равен 192.168.1.1, массив будет равен (192, 168, 1, 1).

Мой код хранит весь IP-адрес в строке, а затем получает последний символ в этой строке. [ip_string substringFromIndex: [ip_string length] - 1] просто получает последний символ в строке, содержащей IP-адрес. Последний символ может быть найден в минус один символ.

Таким образом, если IP-адрес 192.168.1.1, строка lastCharacter будет просто содержать число 1.

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

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

Обычно IP-адреса хранятся в виде строк или массивов целых чисел. Другой вариант - сохранить его как 32-разрядное целое число. Это действительно сводится к тому, что вы хотите сделать.

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

Я бы использовал NSString.Если вам нужно получить его по частям, используйте:

NSArray *pieces = [ipAddress componentsSeparatedByString: @"."];
1 голос
/ 06 февраля 2012

Используйте строку.Вам не нужно выполнять арифметику по IP?

0 голосов
/ 05 июня 2012

192.168.1.1 считается IP-адресом по умолчанию для многочисленных домашних высокоскоростных беспроводных маршрутизаторов. Первоначально он использовался Linksys и, тем не менее, использовался в ряде других продуктов для домашних сетей, включая некоторые из произведенных Netgear, а также Westell и других.

Несмотря на то, что IP-адрес выделяется как IP-адрес по умолчанию для многих высокоскоростных широкополосных беспроводных маршрутизаторов, это не обязательно должно быть. Большое количество производителей устанавливают IP-адрес по умолчанию 192.168.1.1, чтобы продвигать стандартные условия прецессии и упростить для клиентов, впервые использующих свои сетевые системы, просто и эффективно.

Могут ли работать только Linksys и другие беспроводные маршрутизаторы, используя IP 192.168.1.1?

Конечно, нет, учитывая, что 192.168.1.1 определенно является непубличным IPv4-адресом, для работы с этим уникальным IP-адресом может быть разработан любой тип ноутбука или компьютера, модем, коммутатор или другая веб-система. Тем не менее, в большинстве случаев это не рекомендуется, поскольку существует множество продуктов, которые по умолчанию используют 192.168.1.1, что, в свою очередь, может вскоре вызвать проблемы взаимодействия со многими различными продуктами, использующими один и тот же IP. Также очень важно учитывать, что одно сетевое оборудование может иметь только один Ip, если у вас есть несколько устройств, использующих частный IP-адрес , в основном по крайней мере одно должно быть настроено на альтернативное местоположение.

...