C Programmering

POSIX-stik med C-programmering

POSIX-stik med C-programmering

En POSIX-sokkel eller simpelthen en sokkel er defineret som et kommunikationsendepunkt. For eksempel, hvis to parter, A og B, har til hensigt at kommunikere med hinanden, vil det være nødvendigt, at begge disse parter etablerer en forbindelse mellem deres respektive slutpunkter. En stikkontakt giver de kommunikerende parter en gateway, gennem hvilken meddelelserne rejser. Hvis vi taler med hensyn til klienten og serveren, vil opgaven til server-side-stikket være at lytte til de indgående forbindelser, mens stikket på klientsiden er ansvarlig for at oprette forbindelse til server-side-stikket. Denne artikel er beregnet til at gøre begrebet POSIX-stik med C-programmering meget klarere.

Eksempel på brug af Posix Socket med C-programmering i Linux Mint 20

Eksemplet, der præsenteres for dig i dette afsnit, viser en interaktion mellem en klient og en server. Klienten og serveren er de to hovedenheder i klienten / servermodellen i computeren. I vores eksempel sender og modtager både klienten og serveren beskeder til og fra hinanden, mens de bruger POSIX Socket med C-programmering i Linux Mint 20. For at skabe klarhed i forståelsen af ​​koden har vi adskilt koden på klientsiden og koden på serversiden og vil forklare dem begge separat separat nedenfor.

Server-side-koden

Til serversiden har vi simpelthen oprettet et tomt dokument i hjemmekataloget på vores Linux Mint 20-system og navngivet det server.c. I det tomme dokument skal du skrive kodestykkerne vist i de tre billeder nedenfor:

Koden vist på billederne ovenfor kan virke lang, men lad os prøve at forstå det på en ekstremt nem måde. Først og fremmest har vi oprettet et stik og vedhæftet det med det ønskede portnummer, som i vores tilfælde er 8080. Så har vi skrevet en lyttefunktion, som er der for at lede efter alle indgående forbindelser fra klienterne. Dybest set klarer klienten at oprette forbindelse til serveren bare på grund af tilstedeværelsen af ​​denne lyttefunktion. Og når denne forbindelse er oprettet, er serveren klar til at sende og modtage data til og fra klienten.

Læse- og sendefunktionerne tjener formålet med at modtage og sende meddelelser til henholdsvis klienterne. Vi har allerede defineret en standardmeddelelse i vores kode, som vi agter at sende vores klient, og det er "Hej fra server". Efter at have sendt denne meddelelse til klienten, vil den blive vist på klientsiden, mens en meddelelse, der siger "Hej besked sendt", vises på serverens side. Dette handler om vores serverside-kode.

Koden på klientsiden

Nu, for klientsiden, har vi igen oprettet et tomt dokument i hjemmekataloget på vores Linux Mint 20-system og navngivet det klient.c. I det tomme dokument skal du skrive kodestykkerne vist i de to billeder nedenfor:

I den klientsides kode, der er vist i billederne ovenfor, har vi oprettet en sokkel på samme måde som vi gjorde for serversiden-koden. Derefter er der en tilslutningsfunktion, der forsøger at oprette forbindelse til serveren gennem den angivne port. Og når denne forbindelse er accepteret af serveren, er klienten og serveren klar til at sende og modtage meddelelser til og fra hinanden.

Igen, ligesom koden på serversiden, er sende- og læsefunktionerne der for at sende og modtage meddelelser fra henholdsvis serveren. Vi har også nævnt en standardmeddelelse, som vi vil sende til serveren, og det er "Hej fra klient". Efter at have sendt denne besked til serveren, vises denne besked på serversiden, mens en meddelelse, der siger "Hej besked sendt", vises på klientsiden. Og dette bringer os til slutningen af ​​forklaringen på vores klientsides kode.

Kompilering og kørsel af klient- og serversides koder

Det er klart, at vi gemmer både vores klientside- og serversidesfiler efter at have skrevet disse programmer, så er vi klar til at kompilere og køre disse koder. Derfor vil vi være i stand til at visualisere interaktionen mellem vores nyoprettede klient og server. For at nå dette mål er vi nødt til at starte to forskellige terminaler, da vi formodes at køre to separate programmer. Den ene terminal vil være dedikeret til at køre serversiden og den anden til klientsiden.

Så for at kompilere vores serversides kode udfører vi følgende kommando i den første terminal:

$ gcc-server.c-o server

Efter at have kørt denne kommando, hvis der ikke er nogen fejl i din serversides kode, vil der ikke blive vist noget på terminalen, hvilket vil være en indikation af en vellykket kompilering.

På samme måde kompilerer vi klientsidekoden med kommandoen vist nedenfor ved at køre den i den anden terminal:

$ gcc-klient.c-o klient

Når begge koder er kompileret, kører vi dem en efter en. Vi skal dog køre koden på serversiden først, da den skal lytte til forbindelsesanmodningerne. Serversidekoden kan køres med følgende kommando:

$ ./ server

Efter at have kørt serversiden, kan vi køre klientsiden med kommandoen vist nedenfor:

$ ./klient

Når både klienten og serveren er i gang, vil du være vidne til output vist i de følgende billeder på begge terminaler:

Konklusion

Efter at have gennemgået eksemplet, der er delt med dig i denne artikel, vil du forhåbentlig være i stand til at bruge POSIX-stikkene effektivt til at sende og modtage data mellem en klient og server. Dette eksempel er kun en grundlæggende demonstration af Posix-stikkene med C-programmering, men du kan endda gøre disse programmer mere komplekse efter dine behov.

Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...
OpenTTD vs Simutrans
Oprettelse af din egen transportsimulering kan være sjovt, afslappende og ekstremt lokkende. Derfor skal du sørge for at prøve så mange spil som mulig...
OpenTTD Tutorial
OpenTTD er et af de mest populære forretningssimuleringsspil derude. I dette spil skal du oprette en vidunderlig transportvirksomhed. Du starter dog i...