Heim >Backend-Entwicklung >Python-Tutorial >Python implementiert einen einfachen HttpServer-Server

Python implementiert einen einfachen HttpServer-Server

巴扎黑
巴扎黑Original
2017-09-26 10:35:073177Durchsuche

In diesem Artikel wird hauptsächlich das einfache, in Python implementierte HttpServer-Serverbeispiel vorgestellt. Der Herausgeber findet es recht gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf.

Um einen einfachen Server ähnlich wie Tomcat zu schreiben, müssen Sie zunächst die folgenden Punkte verstehen:

1 Rolle und Funktion von (Server)

Rolle A fordert Daten von Rolle B an. Zu diesem Zeitpunkt kann A als Client und B als Server betrachtet werden. Die Hauptverantwortung des Clients besteht darin, Anforderungen zu senden und vom Server basierend auf den von ihm gesendeten Anforderungen zurückgegebene Anforderungsinformationen zu empfangen, während die Hauptverantwortung des Servers darin besteht, Anforderungen zu empfangen und Anforderungsdaten zurückzugeben.

2. Was ist ein Browser und wie funktioniert er?

Wir sprechen oft von B/S, C/S-Architektur Browser/Server, C/S bezieht sich auf Client/Server. Die B/S-Architektur ist eigentlich ein auf den Browser angewendetes Programm, solange die B/S-Architektur nicht auf dem Browser angezeigt wird Browser ist die C/S-Architektur wie das übliche League of Legends-Spiel. Aber im Grunde gibt es nur eine C/S-Architektur, da der Browser ein spezieller Client ist.

Das Besondere am Browser ist, dass er über die folgenden drei Engines verfügt:

  • DOM-Parsing-Engine: Das heißt, der Browser kann analysieren HTML

  • Stil-Parsing-Engine: Das heißt, der Browser kann CSS analysieren

  • Skript-Parsing-Engine: Das heißt, der Browser kann JAVASCRIPT analysieren

3. Socket

Der oben erwähnte Client und Server, wie man die Verbindung und Datenübertragung zwischen ihnen realisiert, das ist Socket, jede Programmiersprache Hat es Socket-Programmierung, die Funktion von Socket besteht darin, die Fähigkeit zur Netzwerkkommunikation bereitzustellen

4. HTTP-Protokoll und der Unterschied zwischen HTTP und TCP/TP

Der Client und Servernutzung Socket Verwirklicht die Fähigkeit der Netzwerkkommunikation und kann die Datenübertragung realisieren. Das Protokoll regelt die Datenübertragung, was bedeutet, dass die zwischen Client und Server übertragenen Daten nach bestimmten Spezifikationen und Standards übertragen werden müssen und nicht blind übertragen werden können.

TCP/IP (Transmission Control Protocol/Internet Protocol): Transmission Control Protocol/Internet Protocol

HTTP (HyperText Transfer Protocol): Hypertext Transfer Protocol.

Der Unterschied zwischen TCP/TP:

Um es anschaulich zu machen: TCP/TP ist die Straße und HTTP das Auto Die Straße muss also auf TCP/TP basieren.

HTTP wird hauptsächlich in Webprogrammen verwendet. Es wurde ursprünglich entwickelt, um eine Methode zum Veröffentlichen und Empfangen von HTML-Seiten bereitzustellen. Dies kann sehr abstrakt und schwer zu verstehen sein. Wenn wir eine Website besuchen, müssen wir insbesondere nur den auf dieser Website basierenden Inhalt abrufen (z. B. HTML, CSS, JavaScript). Wir haben jedoch das vom Browser empfangene Ressourcenpaket abgerufen (Sie können das Fiddler-Tool verwenden) und festgestellt, dass zusätzlich zu dem für die Webseite erforderlichen Entitätsinhalt auch einige der folgenden Informationen vorhanden sind:

HTTP /1.1 200 OK
Cache-Control: privat
Content-Type: text/plain; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft -IIS/7.5
Content-Encoding gibt das Codierungsformat an. Es gibt noch viel mehr als die oben genannten. Ich werde die Bedeutung dieser Parameter hier nicht einzeln vorstellen


5. Die Bedeutung von URL

URL (Uniform Resource Locator). ), das heißt Wir sprechen oft über die URL. Um dies zu veranschaulichen, analysieren wir direkt eine URL: http://198.2.17.25:8080/webapp/index.html

Dies bedeutet, den Server zu finden mit IP 198.2.17.25 Das untere Verzeichnis ist die index.html der Webapp

, aber was wir oft sehen, ist diese URL: http://goodcandle.cnblogs.com/archive/2005/12/10 /294652.aspx


Tatsächlich ist dies dasselbe wie oben, aber hier gibt es eine Domänennamenauflösung, die goodcandle.cnblogs.com in die entsprechende IP-Adresse

Nachdem Sie die oben genannten fünf Punkte geklärt haben, beginnen Sie mit dem Schreiben. Der Code

webServer.py


webServer.py ist sehr klar und prägnant

Der Server gibt Informationen an den Browser zurück, aber die gesendeten Daten müssen den HTTP-Protokollspezifikationen folgen

getFileContent.py dient dazu, die gesendeten Daten gemäß den HTTP-Protokollspezifikationen zu verarbeiten


import socket
import sys
import getFileContent
#声明一个将要绑定的IP和端口,这里是用本地地址
server_address = ('localhost', 8080)
class WebServer():
  def run(self):
    print >>sys.stderr, 'starting up on %s port %s' % server_address
    #实例化一个Socket
    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #绑定IP和端口
    sock.bind(server_address)
    #设置监听
    sock.listen(1)
    #这里首先给个死循环,其实这里是需要多线程的,再后续版本将会实现
    while True:
      #接受客户端的请求并得到请求信息和请求的端口信息
      connection, client_address = sock.accept()
      print >>sys.stderr, 'waiting for a connection'
      try:
        #获取请求信息
        data = connection.recv(1024)
        if data:
          #发送请求信息
          connection.sendall(getFileContent.getHtmlFile(data))
      finally:
        connection.close()

if __name__ == '__main__':
  server=WebServer()
  server.run()

Das obige ist der detaillierte Inhalt vonPython implementiert einen einfachen HttpServer-Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn