HTON, HTONL i HTONS w C

HTON, HTONL i HTONS w C
Niestety, nie każda maszyna przechowuje bajty wartości multibyte w dokładnej sekwencji. Komponenty sieciowe zapewniają konwencjonalny standard sekwencji bajtów dla informacji przenoszonych w Internecie, umożliwiając systemy z różnymi standardami zamówień bajtowych do łączenia. Kolejność bajtu sieciowego jest terminem używanym do opisania tego. Podczas tworzenia połączenia z gniazdem internetowym należy upewnić się, że informacje w grzechu.port i grzech.Komponenty addr sockaddr w konstrukcji muszą być zilustrowane w kolejności bajt sieciowej. W tym przewodniku będziemy omawiać zastosowanie funkcji HTON, HTONL i HTONS CON CONWER SEATENCE BYTE SEKWENCJI Unicode lub Multibyte Wartości całkowitej na sekwencję bajtów sieciowych.

Przykład 1:

Aby utworzyć kod C, musisz mieć zamontowany kompilator GCC w systemie Kali Linux. W ramach powłoki Kali Linux musisz utworzyć nowy plik C o nazwie „Htons.C". Możesz otworzyć ten plik za pomocą instrukcji „Nano” w jednej instrukcji wymienionej na obrazie.

Teraz, gdy plik C jest już uruchomiony w edytorze Nano, dodamy trochę skryptu C, aby opracować użycie „htonów” w C. Każdy kod C zaczyna się od niektórych jego nagłówków uwzględnionych u góry, abyśmy mogli łatwo użyć powiązanych funkcji i zmiennych w kodzie. Wcześniej musimy uwzględnić główne nagłówki wymagane i niezbędne do udanej transmisji i wykorzystania danych wejściowych i wyjściowych do skryptu. Dlatego odrzucamy słowo kluczowe „dołącz”, aby dodać standardowy nagłówek „stdio.h ”,„ stdlib.h ”i„ unistd.h ”w kodzie.

Następnie musimy dodać niektóre nagłówki systemowe, aby umożliwić programowanie gniazda w programowaniu C. Dlatego używamy „SYS/Type.h ”,„ Sys/gniazdo.h ”i„ netinet/in.H ”nagłówek w kodzie. Aby zastosować użycie funkcji htons () w kodzie C, musimy użyć „ARPA/INET.H ”też tutaj nagłówek. Teraz nadszedł czas, aby zdefiniować port 8082 za pomocą słowa kluczowego Connect_Port, które jest potrzebne do podłączenia użytkowników w programowaniu gniazda. Ogólna praca byłaby wykonana w ramach funkcji Main () programowania C i.mi., Kod sterownika C. Ta funkcja została uruchomiona od użycia słowa kluczowego struktury do zdefiniowania struktury „sockadd_in” z zmienną „adresem”, aby dodać adres gniazda w tej zmiennej.

Teraz do wykorzystania grzechu użyto „adresu” struktury adresu.Zmienna portu, która wywołuje funkcję HTONS () ze zmienną Connect_Port I i.mi., Posiadanie numeru portu. Funkcja HTONS () umożliwiłaby użycie różnych standardów zamówień bajtów.

Teraz nadszedł czas, aby skompilować plik C o nazwie „Htons.c ”Po zapisaniu powyższego kodu. Aby go skompilować, musisz użyć słowa kluczowego „GCC” z nazwą pliku „Htons.c ”, -O i nazwa pliku obiektu, która ma zostać utworzona i.mi., „Htons.na zewnątrz".

Teraz, kiedy uruchamiasz plik obiektu utworzony przez instrukcję GCC, włączy użycie standardowych zamówień bajtów w naszym systemie.

Przykład 2:

Czas utworzyć kolejny przykład C, aby wykorzystać funkcję HTONL wraz z funkcją HTONS w kodzie. W tym celu tworzyliśmy kolejny plik C o nazwie „Serwer.C ”i otwieranie go ze standardowym edytorem GNU Nano, jak pokazano na dołączonym obrazie.

Po otwarciu pliku C dodaliśmy te same nagłówki w górnych liniach, jak w pierwszym przykładzie. Ale dodaliśmy również kilka nowych nagłówków: „Czas.h ”Aby użyć funkcji czasowej,„ errno.h ”ma uzyskać numer błędu i„ ciąg.H ”nagłówek został odrzucony, aby użyć zmiennych i funkcji ciągów w kodzie. Ten kod zawiera tylko metodę sterownika Main ().

Dwa deskryptory typów liczb całkowitych zostały zadeklarowane do 0. Jednym z nich jest wysłuchanie pliku i drugiego, aby wykonać połączenie gniazda. Struktura „socket_address” została określona przy użyciu wbudowanej struktury sockaddr_in. Tablica znaków o nazwie „MessageBuffer” w rozmiarze 1025 jest zdefiniowana do przechowywania dowolnej wiadomości, która zostanie przekonwertowana na inne zamówienie bajtów. Wbudowana zmienna czasowa TIME_T służy do zdefiniowania zmiennej „kleszczy”, aby zliczyć całkowite kleszcze zegara. Listen_file_descriptor () będzie przechowywał wartość zwracaną z funkcji socket () lub inicjalizacji gniazda za pośrednictwem opcji AF_INET i SOCK_STREAM.

Funkcja memset () jest tutaj używana do ustawienia pierwszych bajtów zliczania zmiennej Server_Address i Message Buffer na „0” prawdopodobnie podczas korzystania z funkcji sizeoof (). Korzystając z wbudowanej zmiennej Server_Address, zdefiniowaliśmy rodzinę gniazda jako „AF_INET”, a adres wejściowy gniazda jako „inaddr_any” za pomocą funkcji C HTONL (), wywołując wbudowaną zmienną S_ADDR. W ten sam sposób zmienna Server_Address została wykorzystana do wywołania obiektu sin_port i przechowywania w nim numeru portu 8081 za pomocą funkcji HTONS ().

Teraz funkcja programowania gniazda w C została użyta do powiązania gniazda z adresem określonym za pomocą zmiennej Lose_file_Descriptor i zmiennej Server_Address. Funkcja słuchania programu C została tutaj wywołana, aby wysłuchać gniazda pod numerem 10. While pętla została tutaj zainicjowana, aby utworzyć połączenie między gniazdem a czasem podczas korzystania z funkcji Accept (). Proces ten otrzymuje dane w sekwencji danych bajtów czasowych i konwersje je na standardową kolejność bajtów danych, które mogą być używane przez gniazdo i maszynę lokalną. Ostatecznie połączenie zamknięte bez żadnego problemu.

Po wykonaniu i opracowaniu tego programu wygenerowaliśmy jego plik obiektu.

Po uruchomieniu pliku obiektowego gniazdo zaczęło słuchać kleszczy czasu na każdą sekundę i przekonwertować na standardowe kolejność bajtów.

Wniosek

Ten artykuł dotyczy użycia funkcji standardowych kolejności bajtów sieciowych do konwersji różnych danych pochodzących z sieci na standardowe sekwencje bajtów sieciowych. W tym celu wykorzystaliśmy dwa przykłady za pomocą funkcji htons () i htonl ().