Mauvzu: Inet_aton, inet_addr, inet_ntoa funktsiyalari. Reja:
Ta'rif
Inet_aton () funktsiyasi
Atributlar
Ta'rif
inet_aton () Internet mezbon manzili aylantirgan cp bilan başvurulan tarkibida o'zaro IPv4 raqamlari va nuqta (tarmoq bayt tartibi) va saqlaydi institutga . inet_aton (), agar manzil to'g'ri bo'lsa, nolni qaytaradi, noto'g'ri bo'lsa nolni qaytaradi. CPda ko'rsatilgan manzil quyidagi shakllardan birini olishi mumkin:
a B C D
Raqamlarning to'rtta guruhining har biri manzil baytini ifodalaydi; baytlar chapdan o'ngga belgilanadi.
abc
A va b qismlar ikkilik manzilning birinchi ikki baytini ko'rsatadi. C qismi ikkilik manzilning eng o'ng ikki baytini ko'rsatuvchi 16-bitli qiymat sifatida talqin qilinadi. Bu belgi (eski) B sinfidagi tarmoq manzillari bilan mos keladi.
ab
Part bir ikkilik manzili birinchi bayt belgilaydi. B qismi ikkilik manzilning eng o'ng uch baytini ko'rsatuvchi 24-bitli qiymat sifatida qaraladi. Bu belgi A sinf (eskirgan) tarmoq manzillari bilan mos keladi.
a
Bir qiymati har qanday bayt tuzum holda o'zaro saqlanadi 32-bit qiymati sifatida qaraladi.
Yozuv manzillarining yuqoridagi barcha shakllarida raqamlar o'nlik, sakkizlik ( 0 prefiksi bilan ) yoki o'n oltilik ( 0X prefiksi bilan ) sanoq tizimida ko'rsatilishi mumkin. Bu shakllardan birortasida yozilgan manzillar IPv4 nuqtali raqamli yozuv deb ataladi . Deb nomlangan faqat to'rt o'nlik raqamlar foydalanadi shakli, IPv4 o'nlik-nuqta qayd ( IPv4 o'nlik qayd-nuqta ), yoki ba'zan , IPv4 nuqta-to'rt namoyish .
Inet_aton () funktsiyasi string yaroqsiz ma'lumotlarni bo'lsa, o'tgan tor (muvaffaqiyatli qayta, yoki 0 bo'lsa, 1 qaytadi , hech xato bo'ladi yozilgan uchun errno ).
Inet_addr () funktsiyasi Internet mezbon manzili aylantirgan cp tarmoq bayt tartibi o'zaro, xoldor IPv4-raqamli sanoq sistemasida dan. Agar kirishga berilgan manzil noto'g'ri bo'lsa, funktsiya INADDR_NONE (odatda -1) qaytaradi . Ushbu funktsiyadan foydalanish muammoli, chunki -1 qiymati haqiqiy manzilga teng (255.255.255.255). Bu vazifani, foydalanish yordamida oldini olish inet_aton (), inet_pton (3), yoki getaddrinfo (3) o'rniga bir xato ko'rsatish uchun yaxshi bir yo'l beradi.
Inet_network () funktsiyasi IPv4 nuqtali chiziqli cp -ni Internet tarmog'i manzili sifatida foydalanish uchun mos bo'lgan raqamga (xost bayt tartibiga) o'zgartiradi. Muvaffaqiyatli bo'lsa, tarjima qilingan manzil qaytariladi. Agar noto'g'ri satr ko'rsatilsa, -1 qaytariladi.
Inet_ntoa () funktsiyasi imonga tarmoq bayt Internet xost manzili bir uchun IPv4 satrni nuqta. String statik ajratilgan buferga qaytariladi, u keyingi qo'ng'iroqlar ustiga yoziladi.
Inet_lnaof () funktsiyasi internet manzili mezbon sonini qaytaradi ham . Qaytish qiymati asosiy bayt tartibida.
Inet_netof () funktsiyasi internet manzili tarmoq sonini qaytaradi ham . Qaytish qiymati asosiy bayt tartibida.
Inet_makeaddr () funktsiyasi inet_netof () va inet_lnaof () ga qarama -qarshi . Bu bitiştirmek tomonidan yaratilgan tarmoq bayt maqsadida Internet xost manzili, qaytib sof bilan qator mezbon soni (har ikki mezbon bayt maqsadida).
Inet_ntoa (), inet_makeaddr (), inet_lnaof () va inet_netof () da ishlatiladigan in_addr tuzilishi da aniqlanadi :
_addr_t ichida typedef uint32_t ; struct yilda _addr {
yilda _addr_t s_addr;
}; ATRIBUTLAR
Interfeys
|
Xususiyat
|
Ma'nosi
|
inet_aton (), inet_addr (), inet_network (), inet_ntoa ()
|
iplardagi zararsizlik
|
zararsiz (MT-Xavfsiz mahalli
|
inet_makeaddr (), inet_lnaof (), inet_netof ()
|
iplardagi zararsizlik
|
zararsiz (MT-Safe)
|
Ushbu bo'limdagi atamalarning tavsifi uchun atributlarga qarang (7).
MUVOFIQ
inet_addr (), inet_ntoa (): POSIX.1-2001, POSIX.1-2008, 4.3BSD.
Inet_aton () funktsiyasi POSIX.1 da aniqlanmagan, lekin ko'pchilik tizimlarda mavjud. QAYDLAR
X86 arxitekturasida mezbon bayt tartibi shunday bo'ladiki, birinchi navbatda eng kichik bayt (kichik endian = eng kam ahamiyatli) va Internetda ishlatiladigan tarmoq bayt tartibida birinchi navbatda (katta endian = eng muhim) ).
inet_lnaof (), inet_netof () va inet_makeaddr () eskirgan funktsiyalar bo'lib, ular sinf tarmoq manzili ishlatilishini nazarda tutadi . Sinflarga asoslangan manzil IPv4 tarmoq manzilini bayt chegaralari bo'yicha xost va tarmoq komponentlariga ajratadi:
A sinf
Manzilning bu turi manzilning eng muhim biti (tarmoq baytining tartibi) joyida 0 bilan belgilanadi. Tarmoq manzili eng muhim baytda, xost manzillari qolgan uch baytni egallaydi.
B sinf
Manzilning bu turi manzilning eng muhim ikkita biti (tarmoq baytining tartibi) o'rniga ikkilik 10 qiymati bilan ko'rsatiladi. Tarmoq manzili eng muhim ikki baytda, xost manzillari esa qolgan ikki baytda.
C sinf
Bu turdagi manzil, manzilning eng muhim uch biti (tarmoq baytining tartibi) o'rniga ikkilik qiymati bilan ko'rsatiladi. Tarmoq manzili birinchi uchta eng muhim baytda joylashgan va mezbon manzillari qolgan baytni egallaydi.
Sinf manzili endi eskirgan va uning o'rnini sinfsiz adreslash (CIDR) egalladi, bunda manzil va tarmoq komponentlari o'zboshimchalik bilan bitlarni egallashi mumkin (bayt emas).
MISOL
Quyida inet_aton () va inet_ntoa () dan foydalanish uchun misol kodi keltirilgan . Misol natijasini ko'rib chiqing:
$ ./a. amalga 226.000 .000 .037 sakkiz qirrali SS # Oxirgi bayt 226.0 .0 .31
$ ./a. amalga 0x7f .1 hex SS # Birinchi bayt 127,0 .0 .1
Do'stlaringiz bilan baham: |