Állítsa be az Internet szervert a Python alkalmazásban a Socket használatával

click fraud protection

A hálózati kliens oktatóanyagának kiegészítéseként ez az oktatóanyag bemutatja, hogyan lehet egy egyszerű webszervert bevezetni a Piton. Az biztos, hogy ez nem helyettesíti az Apache-t vagy a Zope-t. Vannak még robosztusabb módok is a webszolgáltatások Pythonban történő megvalósításához, olyan modulok segítségével, mint a BaseHTTPServer. Ez a szerver kizárólag a socket modult használja.

Emlékeztetni kell arra, hogy a socket modul a legtöbb Python webszolgáltatási modul gerince. Mint az egyszerű hálózati kliensnél is, egy kiszolgáló felépítése ezzel átlátható módon szemlélteti a Python webszolgáltatásainak alapjait. A BaseHTTPServer maga importálja a foglalat modult a szerver befolyásolására.

Felülvizsgálatként az összes hálózati tranzakció az ügyfelek és a kiszolgálók között történik. A legtöbb protokollban az ügyfelek egy bizonyos címet kérnek és adatokat kapnak.

Minden címen belül sok szerver futhat. A korlátozás a hardverben van. Megfelelő hardver (RAM, processzor sebesség stb.) Mellett ugyanaz a számítógép szolgálhat webszerverként, ftp szerverként és

instagram viewer
levelező szerver (pop, smtp, imap vagy a fentiek mindegyike) egyszerre. Minden szolgáltatás porthoz van társítva. A port egy aljzathoz van kötve. A szerver meghallgatja a hozzá tartozó portot, és információkat ad, amikor a porton kérések érkeznek.

Tehát a hálózati kapcsolat befolyásolása érdekében meg kell ismernie a gazdagépet, a portot és az ezen a porton engedélyezett műveleteket. A legtöbb webszerver a 80-as porton fut. Annak érdekében, hogy ne kerüljön konfliktus a telepített Apache szerverrel, webszerverünk a 8080-as porton fog futni. A többi szolgáltatással való ütközés elkerülése érdekében a legjobb, ha a HTTP-szolgáltatásokat a 80-as vagy a 8080-as porton tartja. Ez a két leggyakoribb. Nyilvánvaló, hogy ha ezeket használják, akkor meg kell találni egy nyitott portot, és figyelmeztetnie kell a felhasználókat a változásra.

Mint a hálózati kliensnél is, meg kell jegyezni, hogy ezek a címek a különböző szolgáltatások általános portszáma. Mindaddig, amíg az ügyfél a helyes kiszolgálást kéri a megfelelő porton, a megfelelő címen, a kommunikáció továbbra is megtörténik. Google Például a levelezőszolgálat eredetileg nem a közös portszámokon működött, de mivel tudják, hogyan kell hozzáférni a fiókokhoz, a felhasználók továbbra is megkaphatják a leveleiket.

A hálózati klienstől eltérően a kiszolgálón minden változó vezetékes. Bármely szolgáltatásnak, amely várhatóan folyamatosan működik, nem szabad a belső logikájának változóit beállítani a parancssorba. Ennek egyetlen változata az lenne, ha valamilyen okból azt akarja, hogy a szolgáltatás alkalmanként és különféle portszámokon futjon. Ha ez lenne a helyzet, akkor is megfigyelheti a rendszeridőt, és ennek megfelelően megváltoztathatja a kötéseket.

Mint már említettük, a szervernek tudnia kell a gazdagépet, amelyhez társítani kell, és azt a portot, amelyen hallgatni kell. Céljaink szerint a szolgáltatást minden gazdagépnevre vonatkozni kell.

A kikötő, ahogy korábban említettük, 8080 lesz. Tehát vegye figyelembe, hogy ha ezt a kiszolgálót a hálózati klienssel együtt használja, akkor meg kell változtatnia az abban használt portszámot program.

Információ kérése vagy kiszolgálása annak elérése érdekében Internet, létre kell hoznunk egy aljzatot. A hívás szintaxisa a következő:

Az első kettő nyilvánvalóan internetes protokollok. Bármi, ami az interneten keresztül utazik, elérhető ezekben a családokban. Sok hálózat továbbra sem működik az IPv6-on. Tehát, ha nem tud másképp, akkor a legbiztonságosabb az IPv4 alapértelmezett beállítása és az AF_INET használata.

Messze a leggyakoribb típusok a SOCK_STEAM és SOCK_DGRAM, mivel az IP csomag két protokollján (TCP és UDP) működnek. Az utóbbi három sokkal ritkább, ezért nem mindig támogatott.

A socket létrehozása után be kell állítanunk a socket opciókat. Bármely socket objektumhoz beállíthatja a socket opciókat a setsockopt () módszer használatával. A szintaxis a következő:

Ha visszajelzést szeretnénk adni annak a személynek, aki felhívja a kiszolgálót, akkor beírhatunk egy nyomtatási parancsot annak megerősítésére, hogy a kiszolgáló működik és működik.

A kiszolgáló beállítása után meg kell mondanunk Piton mit kell tenni, ha az adott porton kérelem érkezik. Ehhez hivatkozunk a kérésre annak értékénél, és egy állandó, miközben hurok argumentumaként használjuk.

Amikor egy kérést készítenek, a szervernek el kell fogadnia a kérést, és létre kell hoznia egy fájlobjektumot, hogy vele kapcsolatba léphessen.

Ebben az esetben a szerver ugyanazt a portot használja az olvasáshoz és az íráshoz. Ezért a makefile módszer kap egy „rw” érvet. A pufferméret null hossza egyszerűen hagyja a fájl azon részét, amelyet dinamikusan meg kell határozni.

Ha nem akarunk létrehozni egy-műveletű kiszolgálót, a következő lépés az, hogy beolvassa a fájlobjektumból származó bemeneteket. Amikor ezt megtesszük, vigyáznunk kell a felesleges szóköz bevitelére.

A kérés cselekvés formájában érkezik, amelyet egy oldal, a protokoll és a használt protokoll verziója követ. Ha egy weblapot akar kiszolgálni, akkor ezt a bemenetet felosztja, hogy letöltse a kért oldalt, majd az oldalt egy változóba olvassa, amelyet azután a socket fájl objektumba ír. A blog szótárba való beolvasásának funkciója megtalálható a blogban.

Annak érdekében, hogy ez az oktatóprogram kissé szemléltesse, hogy mit lehet csinálni a socket modullal, akkor elhagyjuk a szervernek ezt a részét, ehelyett megmutatjuk, hogyan lehet árnyalni az adatok megjelenítését. Írja be a következő néhány sort a program.

Ha egy weblapot küld, az első sor egy jó módszer az adatok webböngészőhöz történő bevezetésére. Ha kihagyja, akkor a legtöbb böngésző alapértelmezés szerint megjeleníti a megjelenítést HTML. Ha azonban benne van, akkor az „OK” -ot kell követnie két új sor karakterek. Ezeket használják a protokollinformáció megkülönböztetésére az oldal tartalmától.

Az első sor szintaxisa, amint valószínűleg feltehetjük, a protokoll, a protokoll verziója, az üzenet száma és az állapota. Ha valaha is meglátogatott egy meglátogatott weboldalt, valószínűleg 404-es hibát kapott. A 200 üzenet itt egyszerűen igenlő üzenet.

A kimenet többi része egyszerűen több oldalra felbontott weboldal. Megjegyezzük, hogy a kiszolgáló beprogramozható a felhasználói adatok felhasználására a kimeneten. A végső sor a webes kérést tükrözi, amint azt a szerver megkapta.

Végül, a kérelem záró aktusaként be kell zárni a fájlobjektumot és a kiszolgálóaljzatot.

Most mentse el ezt a programot egy felismerhető név alatt. Miután felhívta a 'python program_name.py' címre, és ha üzenetet programozott a szolgáltatás futtatásának megerősítésére, ennek a képernyőre kell nyomódnia. Úgy tűnik, hogy a terminál megáll. Mindennek úgy kell lennie. Nyissa meg a böngészőt, és lépjen a localhost telefonszámra: 8080. Ezután látnia kell az általunk adott írási parancsok kimenetét. Felhívjuk figyelmét, hogy helyet igénybe véve nem végeztem el a hibakezelést ebben a programban. Minden, a „vadba” kiadott programnak azonban meg kell felelnie.

instagram story viewer