C Programmering

POSIX-kontakt med C-programmering

POSIX-kontakt med C-programmering

En POSIX-kontakt eller bare en kontakt er definert som et kommunikasjonsendepunkt. For eksempel, hvis to parter, A og B, har til hensikt å kommunisere med hverandre, vil det være nødvendig at begge disse partiene oppretter en forbindelse mellom deres respektive endepunkter. En stikkontakt gir kommunikasjonspartiene en gateway som meldingene reiser gjennom. Hvis vi snakker med hensyn til klient og server, vil jobben til server-side-kontakten være å lytte til innkommende tilkoblinger, mens kontakten på klientsiden vil være ansvarlig for å koble til server-kontakten. Denne artikkelen er ment å gjøre begrepet POSIX-kontakt med C-programmering mye tydeligere.

Eksempel på bruk av Posix Socket med C-programmering i Linux Mint 20

Eksemplet som presenteres for deg i denne delen vil demonstrere en interaksjon mellom en klient og en server. Klienten og serveren er de to hovedenhetene til klienten / servermodellen i databehandlingen. I vårt eksempel vil både klienten og serveren sende og motta meldinger til og fra hverandre mens de bruker POSIX Socket med C-programmering i Linux Mint 20. For å gi klarhet i forståelsen av koden, har vi skilt klientsiden og koden på serversiden, og vi vil forklare dem begge separat nedenfor.

Server-siden-koden

For koden på serversiden har vi ganske enkelt opprettet et tomt dokument i hjemmekatalogen til Linux Mint 20-systemet og kalt det server.c. I det tomme dokumentet må du skrive kodebitene som vises i de tre bildene nedenfor:

Koden vist på bildene ovenfor kan virke lang, men la oss prøve å forstå den på en ekstremt enkel måte. Først og fremst har vi opprettet en stikkontakt og festet den med ønsket portnummer, som i vårt tilfelle er 8080. Så har vi skrevet en lyttefunksjon, som er der for å lete etter alle innkommende tilkoblinger fra klientene. I utgangspunktet klarer klienten å koble seg til serveren bare på grunn av tilstedeværelsen av denne lyttefunksjonen. Og når denne forbindelsen er opprettet, er serveren klar til å sende og motta data til og fra klienten.

Lese- og sendefunksjonene tjener formålet med å motta og sende meldinger til henholdsvis klientene. Vi har allerede definert en standardmelding i koden vår som vi har tenkt å sende klienten vår, og det er "Hei fra server". Etter at du har sendt denne meldingen til klienten, vil den vises på klientsiden, mens en melding som sier "Hello message sent" vil vises på serverens side. Dette handler om koden på serversiden.

Koden på klientsiden

Nå, for klientsiden, har vi igjen opprettet et tomt dokument i hjemmekatalogen til Linux Mint 20-systemet og kalt det klienten.c. I det tomme dokumentet må du skrive kodebitene som vises i de to bildene nedenfor:

I klientsiden som vist på bildene ovenfor, har vi opprettet en stikkontakt på samme måte som vi gjorde for serversiden. Deretter er det en tilkoblingsfunksjon som vil prøve å opprette en forbindelse med serveren gjennom den angitte porten. Og når denne forbindelsen er akseptert av serveren, vil klienten og serveren være klar til å sende og motta meldinger til og fra hverandre.

Igjen, akkurat som koden på serversiden, er sende- og lesefunksjonene der for å sende og motta meldinger fra henholdsvis serveren. Vi har også nevnt en standardmelding som vi vil sende til serveren, og det er "Hei fra klient". Etter å ha sendt denne meldingen til serveren, vil denne meldingen vises på serverens side, mens en melding som sier "Hello message sent" vil vises på klientsiden. Og dette fører oss til slutten av forklaringen på koden på klientsiden.

Kompilering og kjøring av klient- og serversiden

Åpenbart vil vi lagre både filene på klientsiden og serveren etter at vi har skrevet disse programmene, så er vi klar til å kompilere og kjøre disse kodene. Derfor vil vi kunne visualisere samspillet mellom vår nyopprettede klient og server. For å nå dette målet, må vi lansere to forskjellige terminaler siden vi skal kjøre to separate programmer. Den ene terminalen vil være dedikert til å kjøre serversiden, og den andre for klientsiden.

Så for å kompilere koden på serversiden, vil vi utføre følgende kommando i den første terminalen:

$ gcc server.c-o server

Etter at du har kjørt denne kommandoen, hvis det ikke er noen feil i koden på serversiden, vil ingenting vises på terminalen, noe som vil være en indikasjon på en vellykket kompilering.

På samme måte vil vi kompilere klientsideskoden med kommandoen vist nedenfor ved å kjøre den i den andre terminalen:

$ gcc-klient.c-o klient

Når begge kodene er samlet, kjører vi dem en etter en. Vi må imidlertid kjøre koden på serversiden først, siden den skal lytte til tilkoblingsforespørslene. Server-koden kan kjøres med følgende kommando:

$ ./ server

Etter å ha kjørt server-koden, kan vi kjøre klientsiden-koden med kommandoen vist nedenfor:

$ ./klient

Når både klienten og serveren er oppe og går, vil du være vitne til utgangene som vises i følgende bilder på begge terminalene:

Konklusjon

Forhåpentligvis, etter å ha gått gjennom eksemplet som er delt med deg i denne artikkelen, vil du kunne bruke POSIX-kontaktene effektivt for å sende og motta data mellom en klient og server. Dette eksemplet er bare en grunnleggende demonstrasjon av Posix-kontaktene med C-programmering, men du kan til og med gjøre disse programmene mer komplekse i henhold til dine behov.

Vulkan for Linux-brukere
Med hver nye generasjon grafikkort ser vi spillutviklere skyve grensene for grafisk troskap og komme et skritt nærmere fotorealisme. Men til tross for...
OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...
OpenTTD Tutorial
OpenTTD er et av de mest populære forretningssimuleringsspillene der ute. I dette spillet må du lage en fantastisk transportvirksomhet. Du begynner im...