Składnia
#włączać
# const znak *inet_ntop (int af, const void *Źródło, znak *dst, socklen_t rozmiar);
Podobnie jak init_pton, ma trzy główne argumenty jako parametr, ale ma również czwarty argument, który dotyczy rozmiaru gniazda/bufora, który jest wskazany przez „DST.”Tutaj opiszemy parametry w funkcji init_ntop ().
Argumenty
Ogólny opis tej funkcji polega na tym, że ta funkcja konwertuje adres IP w czytelnym formacie binarnym. Jest to przede wszystkim numeryczna forma prostego tekstu. Ta konwersja odbywa się za pomocą określonego „SRC”, który konwertuje ją w formacie tekstowym, a następnie wynikowa wartość jest umieszczana w „DST.„Konieczne jest sprawdzenie rozmiaru/ przestrzeni obszaru DST (docelowego). Ponieważ jeśli miejsce jest wystarczające do przechowywania adresu, wówczas umieszczony jest wynikowy adres. W drugim przypadku musi istnieć rozszerzenie wolnego buforu, aby dodać adres.
Argument „AF” odnosi się do rodziny adresu internetowego. Może to być AF_INET dla IPv4 domyślnie lub AF_INET6 dla IPv6. Parametr argumentujący „SRC” pokazuje bufor trzymający adres internetowy IPv4, jeśli argument „AF” to AF_INET lub IPv6. Podany adres musi znajdować się w kolejności bajtu sieciowego.
Podobnie jak argument źródłowy, miejsce docelowe „ds” odnosi się do bufora, w którym funkcja init_ntop () będzie przechowywać wynikowy adres w formie ciągu. Czwarty określa argument wielkości wskazujący na rozmiar bufora. W tym argumencie stwierdzono, że zawsze powinien określać nie-zerowy argument dla miejsca docelowego. W przypadku adresów IPv6 bufor pamięci powinien mieć co najmniej 46 bajtów, podczas gdy w przypadku adresów IPv4 bufor powinien wynosić co najmniej 16 bajtów.
Do przydzielania przechowywania w postaci bufora jest konieczne i powinno być wykonywane na poziomie priorytetu, ponieważ rozmiar ma znaczenie dla przechowywania adresu o wartości wynikowej, aby uniknąć problemów związanych z rozmiarem. Zdefiniowaliśmy dwa ograniczenia, aby umożliwić aplikacjom na łatwe zadeklarowanie/ przydzielenie buforów o dokładnym rozmiarze, aby przyjmować adresy IPv4 i IPv6 w formacie ciągów. Ograniczenia te są również zdefiniowane w bibliotece .
#definicja INET_ADDRSTLEN 16
#definicja INET_ADDRSTRLEN 46
Wartość zwracana
Typ powrotu jest wartością uzyskaną przez funkcję w obu przypadkach; albo jest skutecznie wywoływany lub bezskutecznie zakończony z powodu jakiegokolwiek błędu. Ale zawsze wraca; Dlatego zawsze używamy typu „int” dla głównej funkcji. Jeśli funkcja się powiodła, inet_ntop () zwraca wskaźnik zwracany do bufora zawierającego adres po procesie konwersji. Z drugiej strony, jeśli funkcja się nie powiodła, inet_ntop () zwraca zerową lub „0” i wysyła errno, aby łatwo naprawić błąd.
Błędy spowodowane funkcją init_ntop ()
Wiele możliwych błędów może stłumić funkcję init_ntop () do skutecznego wykonywania, ale podkreśliliśmy głównie dwa z nich tutaj.
Eafnosupport
Parametr to nieprawidłowa liczba. Innymi słowy, nie należy do rodziny obsługiwanej sieci.
Enospc
Ten błąd występuje z powodu mniejszej przestrzeni do przechowywania konwertowanego adresu. Miejsce docelowe „DST” nie jest duże, co prowadzi do wystarczającej pamięci, aby przechowywać wynikową wartość lub przetłumaczony adres. Tak więc Errno wspomina o przyczynie, a następnie błędy te są usuwane.
Podobnie jak inet_pton, init_ntop jest również powiązany z programowaniem gniazda. Ponieważ funkcja gniazda zawiera argument domeny jako parametr należący do AF_INET (IP), więc w przypadku obu protokołów wybierane są IPv4 lub IPv6.
Implementacja init_ntop ()
Przed rozpoczęciem wdrożenia widzieliśmy, że użycie i ogólny opis tej funkcji są również udostępniane na stronie ręcznej systemu operacyjnego Ubuntu Linux, aby ułatwić użytkownikowi jego funkcjonalność działającą.
$ man inet_ntop
Korzystając z wspomnianego powyżej, użytkownik jest skierowany na stronę zawierającą wszystkie opisy init_ntop (). Przyłączyliśmy fragment do Twojej pomocy.
Przykład 1
Wdrożyliśmy przykłady w systemie operacyjnym Linux; W tym celu musisz mieć edytora tekstu, aby napisać w nim kody źródłowe. Podczas gdy dla wartości wynikających z tego użyjemy terminali Ubuntu. Otwórz domyślny edytor tekstu Ubuntu i użyj poniżej wspomnianego kodu źródłowego, aby zademonstrować działanie init_ntop ().
Init_ntop () działa przeciwnie do init_pton; Jeśli masz trochę wiedzy o init_pton (), łatwo zrozumiesz funkcjonalność. W przeciwnym razie konwertowanie adresów nie jest zbyt trudne przy użyciu tych funkcji w języku programowania C.
Zaczynając od bibliotek, możesz zobaczyć, że użyliśmy ARPA/INET.Biblioteka H, ponieważ zawiera wszystkie informacje dotyczące adresów internetowych. Z drugiej strony, biblioteka gniazd systemowych również musi być kierowana, ponieważ bez niego połączenie nie jest możliwe.
#włączać
#włączać
Po bibliotekach wykorzystaliśmy ograniczenia, aby wymienić adresy dotyczące protokołów internetowych 4 i 6. Podany tutaj adres to format binarny przekonwertowany na format numeryczny i łatwo zrozumiały. Tutaj inicjowane są dwie struktury zarówno dla TH4, jak i 6 IP. Podobnie oba bufory są tutaj używane do przechowywania wynikowych wartości. Wywołując funkcję init_ntop, należy upewnić się, że rozmiar bufora nie jest zerowy. A następnie, po konwersji, adres jest wyświetlany. W drugiej części należy zidentyfikować błąd. Podobny przypadek to SF_INET6.
Wykonanie potrzebuje kompilatora. To jest kompilator GCC. Z kompilatorem wymieniono nazwę pliku. Jej ntop.C 'to nazwa pliku.
$ gcc -o ntop ntop.C
$./ ntop
Podczas wykonania zobaczysz, że oba adresy obu protokołów internetowych są wyświetlane pomyślnie bez napotkania żadnego błędu.
Przykład 2
Ten przykład obejmuje funkcje zarówno funkcji INET_NTOP (), jak i inet_pton () w jednym kodzie źródłowym. Funkcja PTON () zawiera trzy argumenty z adresem. Jednocześnie inet_ntop () ma 4 parametry o rozmiarze bufora. Po pierwsze, PTON () przekształca adres w format binarny z wartościami liczbowymi, które nie są łatwo czytelne przez ludzi. Init_ntop () przekształca go z powrotem w format tekstu.
Skompiluj kod i wykonaj go.
Możesz zobaczyć, że adres podany jako wejście jest wyświetlany bez żadnej zmiany za pomocą prostego ciągu do utworzenia adresu w formacie tekstowym.
Wniosek
Stwierdzono, że artykuł „Przykład funkcji init_ntop” zawiera wszystkie możliwe ogólne opisy dotyczące użycia funkcji NTOP () wraz z użytymi argumentami. Wspomniano również niektóre błędy, które należy zidentyfikować, czy coś pójdzie nie tak w przypadku miejsca do przechowywania lub miejsca docelowego źródła. W każdym razie wykorzystaliśmy dwa podstawowe, ale wpływowe przykłady, aby wykazać działanie tej funkcji.