C Programiranje

POSIX vtičnica s programiranjem C

POSIX vtičnica s programiranjem C

Vtičnica POSIX ali preprosto vtičnica je opredeljena kot komunikacijska končna točka. Na primer, če nameravata obe strani, A in B, komunicirati med seboj, bosta morali obe strani vzpostaviti povezavo med svojimi končnimi točkami. Vtičnica komunikacijskim stranem zagotavlja prehod, skozi katerega potujejo sporočila. Če govorimo v smislu odjemalca in strežnika, bo naloga vtičnice na strani strežnika poslušati dohodne povezave, medtem ko bo vtičnica na strani odjemalca odgovorna za povezavo z vtičnico na strani strežnika. Ta članek naj bi pojasnil koncept vtičnice POSIX s programiranjem C.

Primer uporabe Posix vtičnice s programiranjem C v Linux Mint 20

Primer, predstavljen v tem poglavju, bo prikazal interakcijo med odjemalcem in strežnikom. Naročnik in strežnik sta dve glavni entiteti modela odjemalec / strežnik v svetu računalništva. V našem primeru bosta tako odjemalec kot strežnik med uporabo in pošiljanjem sporočil medsebojno in drug od drugega uporabljala vtičnico POSIX s programiranjem C v Linux Mint 20. Zaradi jasnosti pri razumevanju kode smo ločili kodo na strani odjemalca in kodo na strani strežnika, obe pa vam bomo razložili spodaj.

Koda na strani strežnika

Za strežniško kodo smo v domačem imeniku našega sistema Linux Mint 20 preprosto ustvarili prazen dokument in ga poimenovali strežnik.c. V ta prazen dokument morate napisati delčke kode, prikazane na treh slikah spodaj:

Koda, prikazana na zgornjih slikah, se morda zdi dolga, vendar jo poskusimo razumeti na zelo enostaven način. Najprej smo ustvarili vtičnico in jo pritrdili z želeno številko vrat, ki je v našem primeru 8080. Nato smo napisali funkcijo poslušanja, ki je na voljo za iskanje vseh dohodnih povezav od strank. V bistvu se odjemalcu uspe povezati s strežnikom samo zaradi prisotnosti te funkcije poslušanja. In ko je ta povezava vzpostavljena, je strežnik pripravljen za pošiljanje in prejemanje podatkov odjemalcu in od njega.

Funkcije branja in pošiljanja služijo namenom prejemanja in pošiljanja sporočil odjemalcem. V kodi smo že določili privzeto sporočilo, ki ga nameravamo poslati naši stranki, in sicer »Pozdravljeni iz strežnika«. Po pošiljanju tega sporočila odjemalcu bo prikazano na strani odjemalca, na strani strežnika pa sporočilo »Hello message sent«. To je vse o naši kodi na strani strežnika.

Koda na strani odjemalca

Zdaj smo za odjemalsko kodo spet ustvarili prazen dokument v domačem imeniku našega sistema Linux Mint 20 in ga poimenovali odjemalec.c. V ta prazen dokument morate napisati delčke kode, prikazane na spodnjih slikah:

V odjemalski kodi, prikazani na zgornjih slikah, smo ustvarili vtičnico na enak način kot za kodo na strežniški strani. Nato obstaja funkcija povezovanja, ki bo poskušala vzpostaviti povezavo s strežnikom prek določenih vrat. In ko strežnik to povezavo sprejme, bo odjemalec in strežnik pripravljen za pošiljanje in prejemanje sporočil drug od drugega.

Tako kot kodo na strani strežnika so tudi funkcije pošiljanja in branja namenjene pošiljanju in prejemanju sporočil s strežnika. Omenili smo tudi privzeto sporočilo, ki ga želimo poslati strežniku, in to je »Hello from client«. Po pošiljanju tega sporočila strežniku bo to sporočilo prikazano na strani strežnika, medtem ko bo na strani odjemalca prikazano sporočilo »Hello message sent«. In to nas pripelje do konca razlage kode na strani odjemalca.

Prevajanje in zagon odjemalske in strežniške kode

Očitno bomo po pisanju teh programov shranili datoteke na strani odjemalca in strani strežnika, nato pa bomo vsi pripravljeni za prevajanje in zagon teh kod. Tako bomo lahko vizualizirali interakcijo med našo novo ustvarjeno stranko in strežnikom. Da bi dosegli ta cilj, moramo zagnati dva različna terminala, saj naj bi izvajali dva ločena programa. En terminal bo namenjen zagonu kode na strani strežnika, drugi pa za kodo na strani odjemalca.

Torej, za sestavljanje kode na strani strežnika bomo v prvem terminalu izvedli naslednji ukaz:

$ gcc strežnik.c -o strežnik

Če po zagonu tega ukaza v strežniški kodi ne bo nobenih napak, na terminalu ne bo prikazano nič, kar bo znak uspešnega prevajanja.

Na enak način bomo sestavili kodo na strani odjemalca z spodnjim ukazom, tako da jo zaženemo v drugem terminalu:

$ gcc odjemalec.c -o odjemalec

Ko sta obe kodi zbrani, jih bomo zagnali eno za drugo. Vendar moramo najprej zagnati kodo na strani strežnika, saj naj bi poslušala zahteve za povezavo. Kodo na strani strežnika lahko zaženete z naslednjim ukazom:

$ ./ strežnik

Po zagonu kode na strani strežnika lahko zaženemo kodo na strani odjemalca z spodnjim ukazom:

$ ./ stranka

Ko bosta tako odjemalec kot strežnik zagnana, boste na obeh terminalih priča izhodom, prikazanim na naslednjih slikah:

Zaključek

Upajmo, da boste po ogledu primera, ki ste ga delili z vami v tem članku, lahko učinkovito uporabljali vtičnice POSIX za pošiljanje in prejemanje podatkov med odjemalcem in strežnikom. Ta primer je le osnovni prikaz vtičnic Posix s programiranjem C, vendar pa lahko te programe po svojih zahtevah celo zapletete.

SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...
Vadnica za bitko za Wesnoth
Bitka za Wesnoth je ena izmed najbolj priljubljenih odprtokodnih strateških iger, ki jih lahko trenutno igrate. Ne samo, da se ta igra razvija že zelo...
0 A.D. Vadnica
Od številnih strateških iger tam 0 A.D. uspe izstopati kot izčrpen naslov in zelo globoka, taktična igra, čeprav je odprtokodna. Razvoj igre deluje ze...