C Programmēšana

POSIX ligzda ar C programmēšanu

POSIX ligzda ar C programmēšanu

POSIX ligzda vai vienkārši kontaktligzda ir definēta kā sakaru galapunkts. Piemēram, ja divas puses, A un B, plāno sazināties savā starpā, tad abām pusēm būs jāveido savienojums starp attiecīgajiem galapunktiem. Ligzda nodrošina saziņu iesaistītajām pusēm ar vārteju, pa kuru tiek pārvietoti ziņojumi. Ja mēs runājam par klientu un serveri, tad servera puses ligzdas uzdevums būs klausīties ienākošos savienojumus, savukārt klienta puses ligzda būs atbildīga par savienojumu ar servera puses ligzdu. Šis raksts ir paredzēts, lai POSIX ligzdas ar C programmēšanu jēdziens kļūtu daudz skaidrāks.

Piemērs Posix Socket ar C programmēšanu lietošanai Linux Mint 20

Šajā sadaļā sniegtais piemērs parādīs mijiedarbību starp klientu un serveri. Klients un serveris ir divas galvenās klienta / servera modeļa entītijas skaitļošanas pasaulē. Mūsu piemērā gan klients, gan serveris sūtīs un saņems ziņojumus viens otram un viens no otra, vienlaikus izmantojot Linux Mint 20 POSIX ligzdu ar C programmēšanu. Lai nodrošinātu skaidrību koda izpratnē, mēs esam nošķiruši klienta un servera puses kodu un turpmāk abus jums paskaidrosim atsevišķi.

Servera puses kods

Servera puses kodam mēs vienkārši izveidojām tukšu dokumentu mūsu Linux Mint 20 sistēmas mājas direktorijā un nosaucām to par serveri.c. Šajā tukšajā dokumentā jums jāuzraksta koda fragmenti, kas parādīti trīs zemāk esošajos attēlos:

Iepriekš redzamajos attēlos parādītais kods var šķist garš, tomēr mēģināsim to saprast ļoti viegli. Pirmkārt, mēs esam izveidojuši kontaktligzdu un pievienojuši to ar vēlamo porta numuru, kas mūsu gadījumā ir 8080. Tad mēs esam uzrakstījuši klausīšanās funkciju, kas ir paredzēta, lai meklētu visus ienākošos savienojumus no klientiem. Būtībā klientam izdodas izveidot savienojumu ar serveri tikai šīs klausīšanās funkcijas klātbūtnes dēļ. Kad šis savienojums ir izveidots, serveris ir gatavs sūtīt un saņemt datus klientam un no klienta.

Lasīšanas un nosūtīšanas funkcijas kalpo attiecīgi ziņu saņemšanai un nosūtīšanai klientiem. Mēs savā kodā jau esam definējuši noklusējuma ziņojumu, kuru plānojam nosūtīt klientam, un tas ir “Sveiki no servera”. Pēc šī ziņojuma nosūtīšanas klientam tas tiks parādīts klienta pusē, savukārt servera pusē tiks parādīts ziņojums ar tekstu “Labdien nosūtīts ziņojums”. Tas viss ir par mūsu servera puses kodu.

Klienta puses kods

Tagad klienta puses kodam atkal esam izveidojuši tukšu dokumentu mūsu Linux Mint 20 sistēmas mājas direktorijā un nosaukuši to par klientu.c. Šajā tukšajā dokumentā jums jāuzraksta koda fragmenti, kas parādīti divos zemāk esošajos attēlos:

Iepriekš redzamajos attēlos redzamajā klienta puses kodā mēs esam izveidojuši ligzdu tieši tāpat kā servera puses kodam. Pēc tam ir savienojuma funkcija, kas mēģinās izveidot savienojumu ar serveri, izmantojot norādīto portu. Kad serveris ir apstiprinājis šo savienojumu, klients un serveris būs gatavi sūtīt un saņemt ziņojumus viens otram un no otra.

Atkal, tāpat kā servera puses kods, sūtīšanas un lasīšanas funkcijas ir paredzētas, lai attiecīgi nosūtītu un saņemtu ziņojumus no servera. Mēs arī pieminējām noklusējuma ziņojumu, kuru mēs vēlamies nosūtīt serverim, un tas ir “Labdien no klienta”. Pēc šī ziņojuma nosūtīšanas serverim šis ziņojums tiks parādīts servera pusē, savukārt klienta pusē tiks parādīts ziņojums ar tekstu “Labdien nosūtīts ziņojums”. Un tas mūs noved pie klienta puses koda skaidrojuma beigām.

Klienta un servera puses kodu apkopošana un palaišana

Acīmredzot pēc šo programmu uzrakstīšanas mēs saglabāsim gan klienta, gan servera puses failus, tad mēs visi būsim gatavi apkopot un palaist šos kodus. Tādējādi mēs varēsim vizualizēt mijiedarbību starp mūsu jaunizveidoto klientu un serveri. Lai sasniegtu šo mērķi, mums ir jāuzsāk divi dažādi termināļi, jo mums paredzēts palaist divas atsevišķas programmas. Viens terminālis tiks veltīts servera puses koda darbināšanai, bet otrs - klienta puses kodam.

Tātad, lai apkopotu mūsu servera puses kodu, mēs pirmajā terminālā izpildīsim šādu komandu:

$ gcc serveris.c -o serveris

Pēc šīs komandas palaišanas, ja servera puses kodā nebūs kļūdu, tad terminālā nekas netiks parādīts, kas būs norāde uz veiksmīgu kompilāciju.

Tādā pašā veidā mēs apkoposim klienta puses kodu ar komandu, kas parādīta zemāk, palaižot to otrajā terminālā:

$ gcc klients.c -o klients

Kad abi kodi ir apkopoti, mēs tos palaidīsim pa vienam. Tomēr mums vispirms ir jāpalaiž servera puses kods, jo tam vajadzētu klausīties savienojuma pieprasījumus. Servera puses kodu var palaist ar šādu komandu:

$ ./ serveris

Pēc servera puses koda palaišanas mēs varam palaist klienta puses kodu ar komandu, kas parādīta zemāk:

$ ./klients

Kad būs izveidots un darbosies gan klients, gan serveris, jūs redzēsit šādos attēlos redzamos rezultātus abos terminālos:

Secinājums

Cerams, ka pēc tam, kad būsit izskatījis ar jums kopīgo piemēru šajā rakstā, varēsiet efektīvi izmantot POSIX ligzdas datu sūtīšanai un saņemšanai starp klientu un serveri. Šis piemērs ir tikai pamata demonstrācija Posix ligzdām ar C programmēšanu, tomēr jūs pat varat padarīt šīs programmas sarežģītākas atbilstoši savām prasībām.

Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...
Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...
Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...