Это выглядит обманчиво простым, но имеет несколько подводных камней. Например, во многих решениях, опубликованных в предыдущих ответах, предполагается, что квады находятся в базе 10 - но квад, начинающийся с нуля , должен рассматриваться как число 8 (восьмеричное), отсюда, например, любое четверная часть, начинающаяся с нуля и содержащая цифры 8 или 9, недопустима. То есть, IP-номер 192.168.1.010
равен , а не 192.168.1.10
, но в действительности равен 192.168.1.8
, а IP-номер 192.168.019.14
недопустим, поскольку третий квад содержит недопустимую основную 8-значную цифру 9.
Я настоятельно рекомендую вам использовать функции, предоставляемые библиотекой сокетов, включенной в вашу операционную систему или среду компилятора.
Редактировать: (думал, что это было неявно, но) конечно, вы также можете иметь шестнадцатеричные квадраты, а-ля 192.168.1.0x0A
для 192.168.1.10, и, конечно, вы можете счастливо смешивать и сопоставлять свой садистский контент, используя верхний и нижний кейс, а-ля 0xC0.0xa8.1.010
для 192.168.1.8. Попробуйте несколько примеров использования ping, если вы хотите повеселиться. Это прекрасно работает на кроссплатформенности (проверено некоторое время назад при ругательствах под Linux, NetBSD и Win32.)
Дальнейшее редактирование в ответ на запрос KaluSingh Gabbar: Например, вы можете указать 192.168.1.10
как 0xc0a8010a
, и он по-прежнему представляет действительный IP-номер, например:
[mihailim@home ~]$ ping 0xc0a8010a
PING 0xc0a8010a (192.168.1.10) 56(84) bytes of data.
^C
--- 0xc0a8010a ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2479ms