C Programmeerimine

C-programmeerimisega POSIX-pesa

C-programmeerimisega POSIX-pesa

POSIX-pesa või lihtsalt pistikupesa on määratletud kui kommunikatsiooni lõpp-punkt. Näiteks kui kaks osapoolt, A ja B, kavatsevad omavahel suhelda, siis peavad mõlemad osapooled looma ühenduse oma vastavate lõpp-punktide vahel. Pistikupesa pakub suhtlevatele osapooltele lüüsi, mille kaudu sõnumid liiguvad. Kui räägime kliendi ja serveri mõistest, siis serveripoolse sokli ülesandeks on sissetulevate ühenduste kuulamine, samas kui kliendipoolne pesa vastutab serveripoolse pistikupesaga ühenduse loomise eest. Selle artikli eesmärk on muuta C-programmeerimisega POSIX-i sokli kontseptsioon palju selgemaks.

Näide Posixi sokli kasutamisest koos C-programmeerimisega Linux Mint 20-s

Selles jaotises teile esitatud näide näitab kliendi ja serveri vahelist suhtlust. Klient ja server on arvutimaailmas kliendi / serveri mudeli kaks peamist üksust. Meie näites saadavad ja saavad nii klient kui ka server üksteisele ja üksteisele sõnumeid, kasutades samal ajal Linux Mint 20 programmeerimisega POSIX soklit C. Koodi mõistmise selguse huvides oleme eraldanud kliendipoolse koodi ja serveripoolse koodi ning selgitame teile neid mõlemat eraldi allpool.

Serveripoolne kood

Serveripoolse koodi jaoks oleme lihtsalt loonud Linux Mint 20 süsteemi kodukataloogis tühja dokumendi ja nimetanud selle serveriks.c. Sellesse tühja dokumenti peate kirjutama koodijupid, mis on näidatud kolmes allolevas pildis:

Ülalolevatel piltidel näidatud kood võib tunduda pikk, proovigem sellest siiski väga hõlpsalt aru saada. Kõigepealt oleme loonud pesa ja kinnitanud selle soovitud pordinumbriga, mis meie puhul on 8080. Siis oleme kirjutanud kuulamisfunktsiooni, mis on mõeldud kõigi klientide sissetulevate ühenduste otsimiseks. Põhimõtteliselt õnnestub kliendil serveriga ühendust luua just selle kuulamisfunktsiooni olemasolu tõttu. Ja kui see ühendus on loodud, on server kõik seadistatud kliendile ja kliendilt andmeid saatma ja vastu võtma.

Lugemis- ja saatmisfunktsioonid on mõeldud vastavalt klientidele sõnumite vastuvõtmiseks ja saatmiseks. Oleme oma koodis juba määranud vaiketeate, mille kavatseme oma kliendile saata ja see on “Tere serverist”. Pärast selle sõnumi saatmist kliendile kuvatakse see kliendi poolel, serveri poolel aga sõnum „Tere sõnum saadetud”. See kõik käib meie serveripoolse koodi kohta.

Kliendipoolne kood

Nüüd oleme jälle kliendipoolse koodi jaoks loonud oma Linux Mint 20 süsteemi kodukataloogis tühja dokumendi ja nimetanud selle kliendiks.c. Selles tühjas dokumendis peate kirjutama koodilõigud, mis on näidatud kahel alloleval pildil:

Ülalolevatel piltidel näidatud kliendipoolses koodis oleme pesa loonud samamoodi nagu serveripoolse koodi puhul. Seejärel on olemas ühendamisfunktsioon, mis üritab serveriga ühenduse luua määratud pordi kaudu. Ja kui server on selle ühenduse aktsepteerinud, on klient ja server kõik valmis üksteisele sõnumeid saatma ja vastu võtma.

Jällegi, nii nagu serveripoolne kood, on ka saatmis- ja lugemisfunktsioonid vastavalt serverist sõnumite saatmiseks ja vastuvõtmiseks. Samuti oleme maininud vaiketeate, mille soovime serverile saata, ja see on “Tere kliendilt”. Pärast selle sõnumi saatmist serverisse kuvatakse see kiri serveri poolel, kliendi poolel aga sõnum „Tere sõnum saadetud”. Ja see viib meie kliendipoolse koodi selgituse lõpuni.

Kliendi ja serveripoolsete koodide koostamine ja käitamine

Ilmselt salvestame nii nende klientide kui ka serveripoolsed failid pärast nende programmide kirjutamist, siis oleme kõik valmis need koodid kompileerima ja käivitama. Seega suudame visualiseerida vastloodud kliendi ja serveri vastastikust mõju. Selle eesmärgi saavutamiseks peame käivitama kaks erinevat terminali, kuna peaksime käivitama kaks eraldi programmi. Üks terminal eraldatakse serveripoolse koodi käitamiseks ja teine ​​kliendipoolse koodi käitamiseks.

Niisiis, meie serveripoolse koodi koostamiseks täidame esimeses terminalis järgmise käsu:

$ gcc server.c -o server

Pärast selle käsu käivitamist, kui teie serveripoolses koodis pole vigu, ei kuvata terminalis midagi, mis näitab edukat kompileerimist.

Samamoodi kompileerime kliendipoolse koodi allpool toodud käsuga, käivitades selle teises terminalis:

$ gcc klient.c -o klient

Kui mõlemad koodid on kokku pandud, käivitame need ükshaaval. Siiski peame kõigepealt käivitama serveripoolse koodi, kuna see peaks kuulama ühenduse taotlusi. Serveripoolset koodi saab käivitada järgmise käsuga:

$ ./ server

Pärast serveripoolse koodi käivitamist saame kliendipoolse koodi käivitada alltoodud käsuga:

$ ./ klient

Kui nii klient kui ka server on töökorras, näete mõlemal terminalil järgmistel piltidel näidatud väljundeid:

Järeldus

Loodetavasti saate pärast selles artiklis teiega jagatud näite läbimist kasutada POSIX-pistikupesasid tõhusalt kliendi ja serveri vahel andmete saatmiseks ja vastuvõtmiseks. See näide on lihtsalt C-programmeerimisega Posixi pistikupesade põhinäide, kuid saate neid programme isegi oma vajaduste järgi keerukamaks muuta.

OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...