Какой тип данных я должен использовать для хранения IP-адреса?

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

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

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

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

5 ответов

Решение

использование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-адреса, а мой код показывает, как вы можете получить последний символ.

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

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

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

NSArray *pieces = [ipAddress componentsSeparatedByString: @"."];

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-адрес, по крайней мере один из них должен быть настроен на альтернативное местоположение.

Другие вопросы по тегам