C GetsockName Funksjonsbruk

C GetsockName Funksjonsbruk
Socket-programmering er kjent og vanlig i C-programmering mellom utviklere og brukere. Innenfor denne typen programmering har vi en tendens til å koble to endepunkter. Disse endepunktene kan være to servere, en server, en stikkontakt osv. Som navnet antyder, brukes "getSockName" -funksjonen for å få navnet på et stikkontakt som fungerer i nettverket. Det er kanskje ikke stikknavnet, men adressen til den aktuelle kontakten vil vises ved hjelp av denne funksjonen. Derfor har vi prøvd en enkel metode for å illustrere GetSockName () -funksjonen i C innenfor denne guiden. La oss ta en ny titt på eksemplet mens vi jobber med programmet ved å bruke Ubuntu 20.04 Linux -system.

Eksempel: GetSockName -funksjon

La oss se på eksemplet på GetockName -funksjonen i C. Bruk av snarveien “Ctrl+Alt+T” for å raskt åpne kommandolinjeprogrammet på skjermen. Det kan ta bare 10 sekunder, og terminalen din vil være klar til bruk. Innenfor terminalinstruksjonsområdet må du skrive inn "berørings" -spørsmålet sammen med "filnavnet" for å generere en helt ny fil i systemet ditt, i.e., tømme. Mange alternativer er tilgjengelige for å åpne denne nylig genererte filen, i.e., vim, nano eller tekstredigerer. Brukere foretrekker kanskje å åpne den i tekstredigereren først, opprette en kode, oppdatere eller endre koden og deretter utføre i skallet. Det kan gjøres ved ganske enkelt å tappe på filnavnet som er bosatt i filutforskerens "Home" -mappe. Hvis brukere vil åpne den tomme filen i “GNU Nano” -redigereren, kan de bruke terminalen “Nano” -kommandoen. Skriv denne instruksjonen og trykk Enter for å utføre den. Både instruksjonene for filoppretting og åpning er oppført:

C -koden starter med inkludering av noen av de viktigste og viktige overskriftsfilene. Nøkkelordet "inkluderer" brukes med hasjtegnet for å gjøre det. Totalt 11 overskrifter brukes her. “Stdio.H ”har blitt brukt for å få standardinngang og utgang. “Unistd.h ”. brukes til å få tilgang til API for POSIX -operativsystemet, i.e., Linux og Unix-lignende systemer. “Stdlib.H ”header er et standardbibliotek for generelle formål, i.e., Type konverteringer, prosessstyring, lagringsfordeling osv. “Errno.H ”brukes hovedsakelig til feilproblemer og rapportering. “Strengen.H ”-modul for C brukes til å håndtere strengene sammen med noen av de andre funksjonene. “Sys/typer.H ”-overskrift brukes til å definere datatypene for variablene og funksjonene som brukes i programkoden vår.

Overskriftsfilen “SYS/Stat.H ”brukes her for å beskrive konstruksjonen av informasjonsdataene som returneres. Overskriftsbiblioteket “SYS/Socket.H ”vil bli brukt til å bruke funksjonene og mutable av stikkontakter i koden vår. “Sys/un.H ”headerbibliotek er her for å lagre adressene til Unix-lignende stikkontakter. “Netint/in.H ”er spesielt designet for å initialisere den mutable strukturtypen for IPv6 -adressen i loopback.

INET -addrstrlen eller inet6 addrstrlen -variablene er vanligvis definert i “ARPA/inet.H ”headerbibliotek. Etter alle overskriftsfilene har vi implementert en brukerdefinert funksjon som heter “Dusjror”, og tar ett argument med konstant karakterpeker “E”. Dette pekerargumentet refererer til noen feil som er funnet så langt i koden vår. For C -programmeringsspråk, POSIX -feilmetoden, i.e., Perror, brukes til å vise en feilresponsmelding til “Stderr”, avhengig av en Errno -feiltilstand. Den sender ut “STR” og en feilresponsmelding i samsvar med den universelle mutable errno, som bestemt av programkoden. "Perror" -funksjonen bruker argumentet "e" som en feilmelding for å vise det. "Avslutt (1)" -funksjonen er her for å avslutte eller avslutte "dusj ()" -funksjonen rett for øyeblikket:

Her kommer "SOCK_ADDR" -funksjonen til pekertypen som tar tre argumenter i parametrene. Parameteren “S” representerer stikkontakten, og karaktertypen Pointer -variabelen “BUF” vil bli brukt til å lagre sokkeldataene i den. Mens det siste argumentet "bufsize" av et objekt "size_t" -type vil bli brukt til å definere størrelsen på en buffervariabel eller bare buffer. Innenfor denne funksjonen har vi laget en struktur som heter “Addr” for å lagre sokkeladressen. Lengden på "addr" -variabelen er lagret i heltallstypen "len" ved å bruke "størrelse" -funksjonen på den.

GetSockName () -funksjonen er blitt brukt her for å skaffe navnet på en stikkontakt. Denne funksjonen bruker stikkontakt, sokkeladresser og stikklengde som inngangsargumenter. Uansett hva responsen er for GetSockName -funksjonen, vil responsen bli lagret i variabelen “Z”, i.e., samlet eller ikke. "IF" -uttalelsen er her for å sjekke betingelsen om at variabelen “Z” mottok statuskoden som -1, i.e., falsk. Det betyr at hvis du ikke klarer å få navnet på en stikkontakt, vil den returnere null til anropsfunksjonen. "SNPrintf" -funksjonen brukes til å få kontaktens adresse, konvertere den til strengform og vise den på skallet. For dette må buffer- og bufferstørrelse brukes som et argument. Adressen til sokkelporten brukes i funksjonen “NTOHS” for å konvertere den til Host Byte -kode:

Hovedfunksjonen () tar 4 argumenter i sin parameter. Strukturtype -adressevariabelen “Addr” for en stikkontakt erklært med karaktertypevariabelen “BUF” i størrelse 64. Deretter har vi opprettet en Internett -socket IPv4 ved hjelp av sokkelfunksjonen. Denne sokkelstatusen returnerer koden, og den vil bli lagret til variabelen "SCK_INET". Hvis stikkontakten ikke skaper vellykket, for eksempel SCK_inet ikke er lik null, vil den kalle "dusjror" -meldingen mens du sender den en enkel tekst "socket ()".

Etter dette har vi prøvd å opprette en "af_inet" -adresse. Memset () -funksjonen brukes til å initialisere adressen for en stikkontakt til 0. Socket -adressefamilien er initialisert som "af_inet", porten er også erklært mens Htons -funksjonen er her for å oversette vertsbyteformatet til nettverksbyteformat. INET_ATON -funksjonen bruker den lokale IP -adressen for å konvertere den til standard strengformat og lagre den til sokkeladressevariabelen. Størrelsen på adressevariabelen lagres i "Len" -variabelen. Bind () -funksjonen binder adressen til stikkontakten og lagrer statusreturkoden i “Z”. Hvis statuskoden er “-1”, i.e., Falsk, det vil kalle "dusjkror" -meldingen mens du kaller bind () -funksjonen i den. Hvis "SOCK_ADDR ()" -funksjonen ikke kan kalles, vil den også kalle "dusjkror" -funksjonen som tar "sock_addr" som et argument. Printf -setningen viser navnet som er lagret i en buffer:

Den nære funksjonen kalles for å lukke IPv4 Internet Socket:

Etter samlingen og utførelsen har vi stikkontaktnavnet som systemet vårt er koblet til på:

Konklusjon:

Denne artikkelen er faktisk et behov for hver C -bruker ivrig å søke etter eksemplet med "getockname" i Linux. Vi har diskutert et enkelt eksempel i denne guiden. Vi har prøvd å forenkle for våre brukere ettersom koden har blitt delt inn i biter. Vi er håpefulle at du vil finne denne artikkelen veldig nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og opplæringsprogrammer.