C Programiranje

POSIX utičnica s C programiranjem

POSIX utičnica s C programiranjem

POSIX utičnica ili jednostavno utičnica definirana je kao komunikacijska krajnja točka. Na primjer, ako dvije strane, A i B, namjeravaju međusobno komunicirati, tada će biti potrebno da obje strane uspostave vezu između svojih krajnjih točaka. Socket pruža komunikacijskim stranama pristupnik kroz koji poruke putuju. Ako govorimo u terminima klijenta i poslužitelja, tada će posao utičnice na strani poslužitelja biti preslušavanje dolaznih veza, dok će utičnica na strani klijenta biti odgovorna za spajanje na utičnicu na strani poslužitelja. Ovim se člankom želi puno jasnije objasniti koncept POSIX utičnice s C programiranjem.

Primjer upotrebe Posix Socket-a s C programiranjem u Linux Mint 20

Primjer koji vam je predstavljen u ovom odjeljku pokazat će interakciju između klijenta i poslužitelja. Klijent i poslužitelj dva su glavna entiteta modela klijent / poslužitelj u svijetu računarstva. U našem primjeru i klijent i poslužitelj međusobno će slati i primati poruke dok koriste POSIX utičnicu s C programiranjem u Linux Mint 20. Kako bismo unijeli jasnost u razumijevanje koda, odvojili smo kôd na strani klijenta i kôd na strani poslužitelja i u nastavku ćemo vam ih objasniti odvojeno.

Šifra na poslužitelju

Za kod na strani poslužitelja jednostavno smo stvorili prazan dokument u početnom direktoriju našeg sustava Linux Mint 20 i nazvali ga server.c. U taj prazni dokument trebate napisati isječke koda prikazane na tri slike u nastavku:

Kôd prikazan na gornjim slikama može se činiti dugačkim, međutim, pokušajmo ga razumjeti na izuzetno jednostavan način. Prije svega, stvorili smo utičnicu i priključili je sa željenim brojem porta, što je u našem slučaju 8080. Tada smo napisali funkciju preslušavanja koja je tu da traži sve dolazne veze od klijenata. U osnovi se klijent uspije povezati s poslužiteljem samo zbog prisutnosti ove funkcije preslušavanja. A nakon uspostavljanja ove veze, poslužitelj je postavljen za slanje i primanje podataka od i do klijenta.

Funkcije čitanja i slanja služe u svrhu primanja i slanja poruka klijentima. Već smo definirali zadanu poruku u našem kodu koju namjeravamo poslati našem klijentu, a to je "Pozdrav sa servera". Nakon slanja ove poruke klijentu, ona će biti prikazana na strani klijenta, dok će na strani poslužitelja biti prikazana poruka "Hello message sent". Ovo je sve o našem kodu na strani poslužitelja.

Kôd na strani klijenta

Sada smo, opet za klijentski kod, stvorili prazan dokument u početnom direktoriju našeg sustava Linux Mint 20 i nazvali ga klijent.c. U taj prazni dokument trebate napisati isječke koda prikazane na dvije slike u nastavku:

U kodu na strani klijenta prikazanom na gornjim slikama stvorili smo utičnicu na isti način kao i za kod na strani poslužitelja. Zatim, postoji funkcija povezivanja koja će pokušati uspostaviti vezu s poslužiteljem putem navedenog porta. A nakon što poslužitelj prihvati ovu vezu, klijent i poslužitelj bit će postavljeni za međusobno slanje i primanje poruka.

Opet, baš kao i kod na strani poslužitelja, funkcije slanja i čitanja tu su za slanje i primanje poruka s poslužitelja. Također, spomenuli smo zadanu poruku koju želimo poslati poslužitelju, a to je "Pozdrav od klijenta". Nakon slanja ove poruke poslužitelju, ova će se poruka prikazati na strani poslužitelja, dok će se poruka "Zdravo poruka poslana" prikazati na strani klijenta. I ovo nas dovodi do kraja objašnjenja koda na strani klijenta.

Sastavljanje i pokretanje kodova klijenta i poslužiteljske strane

Očito ćemo nakon pisanja ovih programa spremiti datoteke na strani klijenta i na strani poslužitelja, a zatim ćemo biti spremni za kompajliranje i pokretanje ovih kodova. Stoga ćemo moći vizualizirati interakciju između našeg novostvorenog klijenta i poslužitelja. Da bismo postigli taj cilj, moramo pokrenuti dva različita terminala jer bismo trebali pokretati dva odvojena programa. Jedan terminal bit će namijenjen izvođenju koda na strani poslužitelja, a drugi za kôd na strani klijenta.

Dakle, za sastavljanje koda na strani poslužitelja izvršit ćemo sljedeću naredbu u prvom terminalu:

$ gcc poslužitelj.c -o poslužitelj

Nakon izvođenja ove naredbe, ako u vašem kodu na strani poslužitelja neće biti pogrešaka, tada se na terminalu neće prikazati ništa, što će biti pokazatelj uspješne kompilacije.

Na isti ćemo način kompajlirati kod klijenta sa naredbom prikazanom dolje izvodeći ga u drugom terminalu:

$ gcc klijent.c -o klijent

Jednom kad su oba koda sastavljena, pokrenut ćemo ih jedan po jedan. Međutim, prvo moramo pokrenuti kôd na strani poslužitelja jer bi trebao preslušati zahtjeve za povezivanjem. Kôd na strani poslužitelja može se pokrenuti pomoću sljedeće naredbe:

$ ./ poslužitelj

Nakon pokretanja koda na strani poslužitelja, možemo pokrenuti kôd na strani klijenta pomoću naredbe prikazane u nastavku:

$ ./klijent

Nakon što se i klijent i poslužitelj pokrenu, vidjet ćete izlaze prikazane na sljedećim slikama na oba terminala:

Zaključak

Nadamo se da ćete nakon prolaska kroz primjer podijeljen s vama u ovom članku moći učinkovito koristiti POSIX utičnice za slanje i primanje podataka između klijenta i poslužitelja. Ovaj je primjer samo osnovna demonstracija Posix utičnica s C programiranjem, no ove programe možete čak i složiti prema vašim zahtjevima.

Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...
Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...
10 najboljih igara za igranje na Ubuntuu
Windows platforma bila je jedna od dominantnih platformi za igre zbog ogromnog postotka igara koje se danas razvijaju kako bi podržavale Windows. Može...