C Ohjelmointi

POSIX-liitäntä C-ohjelmoinnilla

POSIX-liitäntä C-ohjelmoinnilla

POSIX-liitäntä tai yksinkertaisesti liitäntä määritellään tiedonsiirron päätepisteeksi. Jos esimerkiksi kaksi osapuolta, A ja B, aikovat olla yhteydessä toisiinsa, vaaditaan, että molemmat osapuolet muodostavat yhteyden päätelaitteidensa välille. Liitäntä tarjoaa kommunikoiville osapuolille yhdyskäytävän, jonka kautta viestit kulkevat. Jos puhumme asiakkaasta ja palvelimesta, palvelinpuolen liitännän tehtävänä on kuunnella saapuvia yhteyksiä, kun taas asiakaspuolen liitäntä on vastuussa yhteyden muodostamisesta palvelinpuolen liitäntään. Tämän artikkelin tarkoituksena on tehdä C-ohjelmoinnilla varustetun POSIX-liitännän käsitteestä paljon selkeämpi.

Esimerkki Posix Socketin käytöstä C-ohjelmoinnilla Linux Mint 20: ssä

Tässä osiossa esitelty esimerkki osoittaa asiakkaan ja palvelimen välisen vuorovaikutuksen. Asiakas ja palvelin ovat kaksi asiakas- / palvelinmallin kokonaisuutta laskentamaailmassa. Esimerkissämme sekä asiakas että palvelin lähettävät ja vastaanottavat viestejä toisilleen ja toisiltaan samalla käyttäessään POSIX-Socketia C-ohjelmoinnilla Linux Mint 20: ssä. Selvyyden lisäämiseksi koodin ymmärtämisessä olemme erottaneet asiakaspuolen koodin ja palvelinpuolen koodin ja selitämme molemmat sinulle erikseen alla.

Palvelinpuolen koodi

Palvelinpuolen koodia varten olemme yksinkertaisesti luoneet tyhjän asiakirjan Linux Mint 20 -järjestelmän kotihakemistoon ja nimenneet sen palvelimeksi.c. Tyhjään asiakirjaan sinun on kirjoitettava koodinpätkät, jotka näkyvät kolmessa alla olevassa kuvassa:

Yllä olevissa kuvissa näkyvä koodi saattaa tuntua pitkältä, yritetään kuitenkin ymmärtää se erittäin helposti. Ensinnäkin olemme luoneet liitännän ja liittäneet sen haluttuun porttinumeroon, joka on tapauksessamme 8080. Sitten olemme kirjoittaneet kuuntelutoiminnon, joka on tarkoitettu etsimään kaikki saapuvat yhteydet asiakkailta. Pohjimmiltaan asiakas onnistuu muodostamaan yhteyden palvelimeen vain tämän kuuntelutoiminnon läsnäolon vuoksi. Ja kun tämä yhteys on muodostettu, palvelin on valmis lähettämään ja vastaanottamaan tietoja asiakkaalle ja asiakkaalta.

Luku- ja lähetystoiminnot palvelevat vastaavasti viestien vastaanottamista ja lähettämistä asiakkaille. Olemme jo määrittäneet koodissamme oletusviestin, jonka aiomme lähettää asiakkaallemme, eli "Hei palvelimelta". Kun olet lähettänyt tämän viestin asiakkaalle, se näkyy asiakkaan puolella, kun taas palvelimen puolella näkyy viesti "Hei viesti lähetetty". Kyse on palvelinpuolen koodistamme.

Asiakaspuolen koodi

Asiakaspuolen koodia varten olemme jälleen kerran luoneet tyhjän asiakirjan Linux Mint 20 -järjestelmän kotihakemistoon ja nimenneet sen asiakkaaksi.c. Tyhjään asiakirjaan sinun on kirjoitettava koodinpätkät, jotka näkyvät kahdessa alla olevassa kuvassa:

Yllä olevissa kuvissa esitetyssä asiakaspuolen koodissa olemme luoneet pistorasian samalla tavalla kuin palvelinpuolen koodille. Sitten on yhdistämistoiminto, joka yrittää muodostaa yhteyden palvelimeen määritetyn portin kautta. Ja kun palvelin on hyväksynyt tämän yhteyden, asiakas ja palvelin on asetettu lähettämään ja vastaanottamaan viestejä toisilleen ja toisiltaan.

Jälleen, aivan kuten palvelinpuolen koodi, lähetys- ja lukutoiminnot ovat lähettämään ja vastaanottamaan viestejä palvelimelta. Olemme myös maininneet oletusviestin, jonka haluamme lähettää palvelimelle, ja se on "Hei asiakkaalta". Kun olet lähettänyt tämän viestin palvelimelle, tämä viesti näkyy palvelimen puolella, kun taas asiakkaan puolella näkyy viesti "Hei viesti lähetetty". Ja tämä vie meidät asiakaspuolen koodin selityksen loppuun.

Asiakas- ja palvelinpuolen koodien kokoaminen ja suorittaminen

On selvää, että tallennamme sekä asiakas- että palvelinpuolen tiedostot kirjoitettuamme nämä ohjelmat, sitten olemme kaikki valmiita kääntämään ja suorittamaan nämä koodit. Siksi voimme visualisoida uuden luodun asiakkaan ja palvelimen välisen vuorovaikutuksen. Tämän tavoitteen saavuttamiseksi meidän on käynnistettävä kaksi erilaista päätelaitetta, koska meidän on tarkoitus suorittaa kaksi erillistä ohjelmaa. Yksi pääte on omistettu palvelinpuolen koodin ajamiselle ja toinen asiakaspuolen koodille.

Joten palvelinpuolen koodin kokoamiseksi suoritamme seuraavan komennon ensimmäisessä terminaalissa:

$ gcc -palvelin.c -o-palvelin

Tämän palvelimen suorittamisen jälkeen, jos palvelinpuolen koodissa ei ole virheitä, päätelaitteessa ei näy mitään, mikä on osoitus onnistuneesta kääntämisestä.

Samalla tavalla käännämme asiakaspuolen koodin alla esitetyllä komennolla suorittamalla sen toisessa päätelaitteessa:

$ gcc -asiakas.c -o asiakas

Kun molemmat koodit on koottu, suoritamme ne yksitellen. Meidän on kuitenkin ensin suoritettava palvelinpuolen koodi, koska sen on tarkoitus kuunnella yhteyspyyntöjä. Palvelinpuolen koodi voidaan suorittaa seuraavalla komennolla:

$ ./ palvelin

Palvelinpuolen koodin suorittamisen jälkeen voimme suorittaa asiakaspuolen koodin alla esitetyllä komennolla:

$ ./asiakas

Kun sekä asiakas että palvelin ovat toiminnassa, seuraat seuraavissa kuvissa esitettyjä lähtöjä molemmissa päätelaitteissa:

Johtopäätös

Toivottavasti, kun olet käynyt läpi tässä artikkelissa kanssasi jaetun esimerkin, pystyt käyttämään POSIX-liitäntöjä tehokkaasti tietojen lähettämiseen ja vastaanottamiseen asiakkaan ja palvelimen välillä. Tämä esimerkki on vain perusesittely C-ohjelmoinnilla varustetuista Posix-liitännöistä, mutta voit jopa tehdä näistä ohjelmista monimutkaisempia tarpeidesi mukaan.

Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...