C Programovanie

Pätica POSIX s programovaním v jazyku C

Pätica POSIX s programovaním v jazyku C

POSIX Socket alebo jednoducho Socket je definovaný ako komunikačný koncový bod. Napríklad, ak dve strany, A a B, majú v úmysle komunikovať navzájom, bude potrebné, aby obe tieto strany nadviazali spojenie medzi svojimi príslušnými koncovými bodmi. Zásuvka poskytuje komunikujúcim stranám bránu, cez ktorú správy putujú. Ak hovoríme o klientovi a serveri, úlohou serverovej zásuvky bude počúvanie prichádzajúcich pripojení, zatiaľ čo zásuvka na strane klienta bude zodpovedná za pripojenie k zásuvke na strane servera. Tento článok je zameraný na omnoho jasnejšie poňatie konceptu POSIX socketu s programovaním C.

Príklad použitia zásuvky Posix s programovaním C v systéme Linux Mint 20

Príklad uvedený v tejto časti predvedie interakciu medzi klientom a serverom. Klient a server sú dve hlavné entity modelu klient / server vo svete výpočtovej techniky. V našom príklade bude klient aj server odosielať a prijímať správy navzájom a od seba, pričom bude využívať POSIX Socket s programovaním C v Linux Mint 20. Pre zaistenie jasnosti v porozumení kódu sme oddelili kód na strane klienta a kód na strane servera a obidva vám vysvetlíme osobitne nižšie.

Kód na strane servera

Pre kód na strane servera sme jednoducho vytvorili prázdny dokument v domovskom adresári nášho systému Linux Mint 20 a pomenovali sme ho server.c. Do tohto prázdneho dokumentu musíte napísať útržky kódu zobrazené na troch obrázkoch nižšie:

Kód zobrazený na obrázkoch vyššie sa môže javiť ako zdĺhavý. Pokúsme sa ho však pochopiť veľmi ľahko. Najskôr sme vytvorili zásuvku a pripojili sme ju k požadovanému číslu portu, čo je v našom prípade 8080. Potom sme napísali funkciu počúvania, ktorá je tu na vyhľadanie všetkých prichádzajúcich spojení od klientov. V zásade sa klientovi podarí pripojiť k serveru iba kvôli prítomnosti tejto funkcie počúvania. Akonáhle je toto spojenie nadviazané, server je nastavený na odosielanie a prijímanie údajov do a z klienta.

Funkcie čítania a odosielania slúžia na účely prijímania a odosielania správ klientom. V našom kóde sme už definovali predvolenú správu, ktorú chceme poslať nášmu klientovi, a to „Dobrý deň zo servera“. Po odoslaní tejto správy klientovi sa zobrazí na strane klienta, zatiaľ čo na strane servera sa zobrazí správa „Hello message sent“. Toto je všetko o našom kóde na strane servera.

Kód na strane klienta

Teraz sme pre kód na strane klienta opäť vytvorili prázdny dokument v domovskom adresári nášho systému Linux Mint 20 a nazvali sme ho klient.c. Do tohto prázdneho dokumentu musíte napísať útržky kódu zobrazené na dvoch obrázkoch nižšie:

V kóde na strane klienta zobrazenom na obrázkoch vyššie sme vytvorili soket rovnakým spôsobom, ako sme to urobili pre kód na strane servera. Potom existuje funkcia pripojenia, ktorá sa pokúsi nadviazať spojenie so serverom prostredníctvom zadaného portu. Akonáhle toto pripojenie server prijme, bude klient a server nastavený na odosielanie a prijímanie správ navzájom.

Opäť, rovnako ako kód na strane servera, sú tu aj funkcie odosielania a čítania na odosielanie a prijímanie správ zo servera. Tiež sme spomenuli predvolenú správu, ktorú chceme poslať na server, a to „Dobrý deň od klienta“. Po odoslaní tejto správy na server sa táto správa zobrazí na strane servera, zatiaľ čo na strane klienta sa zobrazí správa „Hello message sent“. A tým sa dostávame na koniec vysvetlenia nášho kódu na strane klienta.

Kompilácia a spustenie kódov klienta a servera

Je zrejmé, že po napísaní týchto programov budeme ukladať súbory na strane klienta aj na strane servera, potom budeme nastavení na kompiláciu a spustenie týchto kódov. Preto budeme schopní vizualizovať interakciu medzi našim novovytvoreným klientom a serverom. Na dosiahnutie tohto cieľa musíme spustiť dva rôzne terminály, pretože máme prevádzkovať dva samostatné programy. Jeden terminál bude určený na spustenie kódu na strane servera a druhý na kód na strane klienta.

Takže pri zostavovaní nášho kódu na strane servera vykonáme v prvom termináli nasledujúci príkaz:

$ gcc server.c -o server

Ak po spustení tohto príkazu nebudú v kóde na strane servera žiadne chyby, na termináli sa nezobrazí nič, čo bude indikáciou úspešnej kompilácie.

Rovnakým spôsobom zostavíme kód na strane klienta pomocou nižšie uvedeného príkazu jeho spustením v druhom termináli:

$ gcc klient.c -o klient

Po zostavení oboch kódov ich spustíme jeden po druhom. Najprv však musíme spustiť kód na strane servera, pretože má načúvať požiadavkám na pripojenie. Kód na strane servera je možné spustiť pomocou nasledujúceho príkazu:

$ ./ server

Po spustení kódu na strane servera môžeme spustiť kód na strane klienta pomocou príkazu uvedeného nižšie:

$ ./zákazník

Akonáhle bude klient aj server funkčný, budete svedkami výstupov zobrazených na nasledujúcich obrázkoch na oboch termináloch:

Záver

Dúfajme, že po absolvovaní príkladu zdieľaného s vami v tomto článku budete môcť efektívne používať zásuvky POSIX na odosielanie a prijímanie údajov medzi klientom a serverom. Tento príklad je iba základnou ukážkou zásuviek Posix s programovaním v jazyku C, môžete ich však podľa svojich požiadaviek ešte vylepšiť.

Tlačidlo ľavého kliknutia myši nefunguje v systéme Windows 10
Ak používate samostatnú myš s prenosným počítačom alebo stolovým počítačom, ale nefunguje ľavé tlačidlo myši vo Windows 10/8/7 z nejakého dôvodu uvádz...
Kurzor pri písaní v systéme Windows 10 skáče alebo sa pohybuje náhodne
Ak zistíte, že kurzor myši skáče alebo sa pohybuje sám, automaticky a náhodne pri písaní na notebooku alebo počítači so systémom Windows, niektoré z t...
Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...