Kaip tinklo kliento vadovėlio papildymas, šis mokymas parodo, kaip įdiegti paprastą žiniatinklio serverį Python. Jei norite būti tikri, tai nepakeičia „Apache“ ar „Zope“. Taip pat yra tvirtesnių būdų, kaip įdiegti interneto paslaugas „Python“, naudojant tokius modulius kaip „BaseHTTPServer“. Šis serveris naudoja tik lizdo modulį.
Prisiminsite, kad lizdo modulis yra daugelio „Python“ interneto paslaugų modulių pagrindas. Kaip ir paprasto tinklo kliento atveju, serverio kūrimas su juo skaidriai paaiškina interneto paslaugų „Python“ pagrindus. „BaseHTTPServer“ pati importuoja lizdo modulį, kad paveiktų serverį.
Peržiūrint, visos tinklo operacijos vyksta tarp klientų ir serverių. Daugelyje protokolų klientai prašo tam tikro adreso ir gauna duomenis.
Kiekviename adresu gali veikti daugybė serverių. Ribojimas yra aparatinėje įrangoje. Esant pakankamai aparatinės įrangos (RAM, procesoriaus greičio ir kt.), Tas pats kompiuteris gali tarnauti kaip interneto serveris, FTP serveris ir pašto serveris (pop, smtp, imap ar visi aukščiau išvardyti dalykai) tuo pačiu metu. Kiekviena paslauga yra susijusi su uostu. Prievadas yra sujungtas su lizdu. Serveris išklauso susijusį prievadą ir pateikia informaciją, kai yra gautos užklausos tame prievade.
Taigi, norėdami paveikti tinklo ryšį, turite žinoti pagrindinį kompiuterį, prievadą ir jame leidžiamus veiksmus. Dauguma interneto serverių veikia 80 prievadu. Tačiau, siekiant išvengti konflikto su įdiegtu „Apache“ serveriu, mūsų žiniatinklio serveris veiks 8080 prievadu. Norint išvengti konfliktų su kitomis paslaugomis, geriausia laikyti HTTP paslaugas 80 ar 8080 prievaduose. Tai yra dvi dažniausios. Akivaizdu, kad jei jie naudojami, turite rasti atvirą prievadą ir įspėti vartotojus apie pakeitimą.
Kaip ir tinklo klientas, turėtumėte atkreipti dėmesį, kad šie adresai yra bendrieji skirtingų paslaugų prievadų numeriai. Kol klientas paprašys teisingos paslaugos tinkamame uoste tinkamu adresu, bendravimas vis tiek vyks. „Google“ Pvz., pašto tarnyba iš pradžių neveikė bendrų prievadų numerių, tačiau, kadangi jie žino, kaip pasiekti savo abonementus, vartotojai vis tiek gali gauti jų paštą.
Skirtingai nuo tinklo kliento, visi serverio kintamieji yra laidiniai. Bet kuri paslauga, kurios tikimasi nuolat veikti, komandinėje eilutėje neturėtų nustatyti vidinės logikos kintamųjų. Vienintelis šio varianto variantas būtų, jei dėl kokių nors priežasčių norėtumėte, kad paslauga būtų teikiama retkarčiais ir įvairiais prievadų numeriais. Tačiau jei taip būtų, vis tiek galėtumėte stebėti sistemos laiką ir atitinkamai pakeisti įrišimus.
Kaip jau minėta, serveris turi žinoti pagrindinį kompiuterį, prie kurio jis bus susietas, ir prievadą, kuriame jo reikia klausytis. Mūsų tikslams paslauga bus taikoma bet kokiam pagrindinio kompiuterio vardui.
Kaip minėta anksčiau, uostas bus 8080. Taigi atkreipkite dėmesį, kad jei naudosite šį serverį kartu su tinklo klientu, turėsite pakeisti tame prievado numerį programa.
Ar paprašyti informacijos, ar ją įteikti, norint pasiekti internetas, turime sukurti lizdą. Šio skambučio sintaksė yra tokia:
Pirmieji du akivaizdžiai yra interneto protokolai. Šiose šeimose galima pasiekti viską, kas keliauja internetu. Daugelis tinklų vis dar neveikia „IPv6“. Taigi, jei jūs nežinote kitaip, saugiausia yra numatytieji IPv4 ir naudoti AF_INET.
Labiausiai paplitę tipai yra SOCK_STEAM ir SOCK_DGRAM, nes jie veikia dviejuose IP rinkinio protokoluose (TCP ir UDP). Pastarieji trys yra daug retesni, todėl ne visada gali būti palaikomi.
Sukūrę lizdą, tada turime nustatyti lizdo parinktis. Bet kokiam lizdo objektui galite nustatyti lizdo parinktis, naudodamiesi setsockopt () metodu. Sintaksė yra tokia:
Jei norime pateikti atsiliepimą asmeniui, kuris skambina į serverį, dabar galėtume įvesti spausdinimo komandą, kad patvirtintume, kad serveris veikia ir veikia.
Nustatę serverį, dabar turime pasakyti Python ką daryti, kai pateikiamas prašymas nurodytame uoste. Tam mes remiamės prašymu pagal jo vertę ir naudojame jį kaip nuolatinės, o kartu kilpos argumentą.
Pateikęs užklausą, serveris turėtų priimti prašymą ir sukurti failo objektą, kad galėtų su juo bendrauti.
Tokiu atveju serveris skaitymui ir rašymui naudoja tą patį prievadą. Todėl makefile metodui pateikiamas argumentas „rw“. Nulinis buferio dydžio ilgis tiesiog palieka tą dinaminę failo dalį.
Kitas, jei nenorime sukurti vieno veiksmo serverio, kitas žingsnis yra nuskaityti įvestį iš failo objekto. Kai tai padarysime, turėtume būti atsargūs ir pašalinti tą perteklinį tarpą.
Prašymas bus pateiktas kaip veiksmas, po kurio nurodomas puslapis, protokolas ir naudojama protokolo versija. Jei norima aptarnauti tinklalapį, šis įvestis padalijama, kad būtų nuskaitytas prašomas puslapis, ir tada nuskaito tą puslapį į kintamąjį, kuris tada rašomas į lizdo failo objektą. Failo skaitymo į žodyną funkciją galima rasti tinklaraštyje.
Norėdami, kad ši instrukcija šiek tiek paaiškintų, ką galima padaryti su lizdo moduliu, mes atsisakysime tos serverio dalies ir parodysime, kaip galima niuansus pateikti duomenims. Įveskite kitas eilutes į programa.
Jei siunčiate tinklalapį, pirmoji eilutė yra puikus būdas pateikti duomenis į interneto naršyklę. Jei to nepaisysite, dauguma interneto naršyklių pasirinks numatytąją HTML. Tačiau jei tai yra, reikia sekti „Gerai“ du nauji eilutės simboliai. Jie naudojami atskirti protokolo informaciją nuo puslapio turinio.
Pirmosios eilutės sintaksė, kaip jūs greičiausiai galite spėti, yra protokolas, protokolo versija, pranešimo numeris ir būsena. Jei kada nors nuėjote į perkeltą tinklalapį, tikriausiai gavote 404 klaidą. 200 pranešimas čia yra tiesiog teigiamas pranešimas.
Likusi išvestis yra tiesiog kelioms eilutėms suskaidytas interneto puslapis. Atkreipkite dėmesį, kad serverį galima užprogramuoti naudoti išvestyje vartotojo duomenis. Paskutinė eilutė atspindi žiniatinklio užklausą, kai ją gavo serveris.
Galiausiai, uždarant prašymą, turime uždaryti failo objektą ir serverio lizdą.
Dabar išsaugokite šią programą atpažįstamu vardu. Kai jūs paskambinsite „python program_name.py“, jei suprogramuosite pranešimą, kuris patvirtins, kad paslauga veikia, ji turėtų būti atspausdinta ekrane. Tada terminalas, atrodo, pristabdys. Viskas taip, kaip turėtų būti. Atidarykite savo interneto naršyklę ir eikite į vietinį serverį: 8080. Tada turėtumėte pamatyti mūsų duotų rašymo komandų išvestį. Atminkite, kad vietos labui šioje programoje neįgyvendinau klaidų tvarkymo. Tačiau bet kokia programa, išleista į „laukinį“, turėtų.