Asenna Internet-palvelin Python-sovellukseen Socket-sovelluksen avulla

click fraud protection

Täydennys verkkoasiakasohjelmaan, tämä opetusohjelma näyttää kuinka toteuttaa yksinkertainen web-palvelin pytonkäärme. Varmasti, tämä ei korvaa Apachea tai Zopea. On myös vankempia tapoja toteuttaa verkkopalveluita Pythonissa käyttämällä moduuleja, kuten BaseHTTPServer. Tämä palvelin käyttää vain pistorasiamoduulia.

Muistutte, että pistorasiamoduuli on useimpien Python-verkkopalvelumoduulien selkäranka. Kuten yksinkertaisen verkkokäyttäjän kanssa, palvelimen rakentaminen sen avulla kuvaa verkkopalveluiden perusteita Pythonissa läpinäkyvästi. BaseHTTPServer tuo itse pistorasiamoduulin vaikuttaakseen palvelimeen.

Tarkastelun perusteella kaikki verkkotapahtumat tapahtuvat asiakkaiden ja palvelimien välillä. Useimmissa protokolloissa asiakkaat kysyvät tiettyä osoitetta ja vastaanottavat tietoja.

Kussakin osoitteessa voi palvella useita palvelimia. Raja on laitteistossa. Riittävällä laitteistolla (RAM, prosessorin nopeus jne.) Sama tietokone voi toimia web-palvelimena, ftp-palvelimena ja postipalvelin

instagram viewer
(pop, smtp, imap tai kaikki yllä olevat) kaikki samanaikaisesti. Jokainen palvelu liittyy porttiin. Portti on sidottu pistorasiaan. Palvelin kuuntelee siihen liittyvää porttia ja antaa tietoja, kun kyseiseen porttiin vastaanotetaan pyyntöjä.

Jotta verkkoyhteyteen vaikuttaa, sinun on tiedettävä isäntä, portti ja kyseisessä portissa sallitut toiminnot. Useimmat web-palvelimet toimivat portilla 80. Ristiriitojen välttämiseksi asennetun Apache-palvelimen kanssa Web-palvelimemme toimii kuitenkin portilla 8080. Ristiriitojen välttämiseksi muiden palveluiden kanssa on parasta pitää HTTP-palvelut portissa 80 tai 8080. Nämä ovat kaksi yleisintä. On selvää, että jos näitä käytetään, sinun on löydettävä avoin portti ja varoitettava käyttäjiä muutoksesta.

Kuten verkkoasiakkaan kohdalla, huomaa, että nämä osoitteet ovat eri palvelujen yleisiä porttinumeroita. Kommunikaatio tapahtuu niin kauan kuin asiakas pyytää oikeaa palvelua oikeassa portissa oikeassa osoitteessa. Googlen Esimerkiksi postipalvelu ei alun perin toiminut yleisillä porttinumeroilla, mutta koska he osaavat käyttää tiliään, käyttäjät voivat silti saada postinsa.

Toisin kuin verkkoasiakas, kaikki palvelimen muuttujat ovat kiinteitä. Kaikilla palveluilla, joiden odotetaan jatkuvan jatkuvasti, ei pitäisi olla sisäisen logiikan muuttujia asetettu komentorivillä. Ainoa variaatio tässä olisi, jos haluat jostain syystä palvelun toimittavan satunnaisesti ja eri porttinumeroilla. Jos näin olisi, pystyt silti seuraamaan järjestelmän aikaa ja muuttamaan sidoksia vastaavasti.

Kuten jo mainittiin, palvelimen on tiedettävä isäntä, johon se liitetään, ja portti, jota kuunnella. Tarkoituksiamme varten palvelu palvelee mitä tahansa isäntänimeä.

Kuten aiemmin mainittiin, satama on 8080. Joten huomaa, että jos käytät tätä palvelinta yhdessä verkkoasiakkaan kanssa, sinun on vaihdettava siinä käytetyn portin numero ohjelmoida.

Pitäisikö tietoja pyytää vai palvelemaan niitä pääsyä varten Internet, meidän on luotava pistorasia. Tämän puhelun syntaksi on seuraava:

Kaksi ensimmäistä ovat selvästi Internet-protokollia. Kaikista Internetin kautta matkustavista voi päästä näissä perheissä. Monet verkot eivät vieläkään toimi IPv6: lla. Joten, ellet tiedä toisin, on turvallisinta olettaa IPv4 ja käyttää AF_INET.

Ylivoimaisesti yleisimmät tyypit ovat SOCK_STEAM ja SOCK_DGRAM, koska ne toimivat IP-sarjan kahdessa protokollassa (TCP ja UDP). Kolme viimeksi mainittua ovat paljon harvinaisempia, joten niitä ei aina voida tukea.

Pistorasian luomisen jälkeen meidän on sitten asetettava pistorasiavaihtoehdot. Voit määrittää minkä tahansa pistorasioobjektin pistorasiavaihtoehdot setockopt () -menetelmällä. Syntaksi on seuraava:

Jos haluamme antaa palautetta palvelimelle soittavalle henkilölle, voimme nyt antaa tulostuskomennon varmistaaksemme palvelimen olevan käynnissä.

Kun palvelin on asennettu, meidän on nyt kerrottava pytonkäärme mitä tehdä, kun pyyntö esitetään annetussa satamassa. Tätä varten me vertaa pyyntöä sen arvon perusteella ja käytämme sitä perusteena pysyvä samalla silmukka.

Kun pyyntö esitetään, palvelimen on hyväksyttävä pyyntö ja luotava tiedostoobjekti vuorovaikutuksessa sen kanssa.

Tässä tapauksessa palvelin käyttää samaa porttia lukemiseen ja kirjoittamiseen. Siksi makefile-menetelmälle annetaan argumentti 'rw'. Puskurin koon nolla pituus yksinkertaisesti jättää tiedoston osan määriteltäväksi dynaamisesti.

Ellemme halua luoda yksitoimista palvelinta, seuraava vaihe on lukea syöte tiedostoobjektista. Kun teemme niin, meidän pitäisi olla varovaisia ​​poistamaan ylimääräisen välilyönnin syöttäminen.

Pyyntö tehdään toiminnan muodossa, jota seuraa sivu, protokolla ja käytetyn protokollan versio. Jos halutaan palvella verkkosivua, se halkaistaan ​​tämän syötteen noutaaksesi pyydetyn sivun ja sitten lukea kyseinen sivu muuttujaksi, joka sitten kirjoitetaan socket-tiedostoobjektiin. Toiminto tiedoston lukemiseksi sanakirjaan löytyy blogista.

Jotta tästä opetusohjelmasta saataisiin hiukan havainnollisempaa siitä, mitä voidaan tehdä pistorasiamoduulilla, luopumme kyseisestä palvelimen osasta ja osoitamme sen sijaan, miten tietojen esitys voidaan tehdä vivahteisiksi. Kirjoita seuraavat seuraavat rivit ohjelmoida.

Jos joku lähettää verkkosivua, ensimmäinen rivi on hieno tapa tuoda tiedot Web-selaimeen. Jos se jätetään pois, useimmat selaimet tekevät oletuksena renderöinnin HTML. Kuitenkin, jos sellainen sisältyy, seuraa OK kaksi uudet rivimerkit. Niitä käytetään erottamaan protokollitiedot sivun sisällöstä.

Ensimmäisen rivin syntaksi, kuten voit todennäköisesti olettaa, on protokolla, protokollaversio, viestin numero ja tila. Jos olet joskus käynyt siirtyneellä verkkosivulla, olet todennäköisesti saanut virheen 404. Tässä 200 viesti on yksinkertaisesti myöntävä viesti.

Loppuosa tulos on yksinkertaisesti verkkosivu, joka on hajotettu usealle riville. Huomaa, että palvelin voidaan ohjelmoida käyttämään käyttäjän tietoja ulostulossa. Viimeinen rivi heijastaa verkkopyyntöä palvelimen vastaanottamana.

Viimeiseksi, pyynnön päättämistoimina meidän on suljettava tiedostoobjekti ja palvelinliitäntä.

Tallenna nyt tämä ohjelma tunnistettavalla nimellä. Kun olet soittanut sille 'python program_name.py', jos ohjelmoit viestin, joka vahvistaa palvelun olevan käynnissä, tämän pitäisi tulostaa näytölle. Sitten pääte näyttää pysähtyvän. Kaikki on niin kuin sen pitäisi olla. Avaa selaimesi ja siirry osoitteeseen localhost: 8080. Sinun pitäisi sitten nähdä annettujen kirjoituskomentojen tulos. Huomaa, että tilan vuoksi en ole toteuttanut virheiden käsittelyä tässä ohjelmassa. Kaikkien "villiin" julkaistujen ohjelmien tulisi kuitenkin olla.

instagram story viewer