Dieser Artikel ist Zenns Online-Buch
"Einführung in eine selbst erstellte Python-Webanwendung für träge Webingenieure im 3. Jahr"
Dies ist ein Teilauszug aus.
Hier https://qiita.com/bigen1925/items/dde5575da6c45a91808d Bitte lesen Sie auch.
Erstellen wir plötzlich einen Server, der eine Anforderung von einem Browser empfängt und mit Python eine Antwort an den Browser zurückgibt.
Das folgende Programm startet als Server an Port 8080 (localhost: 8080
) Ihres PCs, schreibt den Inhalt in eine Datei namens server_recv.txt
, wenn eine Anfrage vom Browser empfangen wird, und dann server_send.txt
Der Inhalt der Datei wird gelesen und als Antwort an den Browser zurückgegeben.
TCPServer.py
import socket
class TCPServer:
"""
Eine Klasse, die einen Server darstellt, der die TCP-Kommunikation ausführt
"""
def serve(self):
"""
Starten Sie den Server
"""
print("===Starten Sie den Server===")
try:
#Socket generieren
server_socket = socket.socket()
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
#Weisen Sie den Socket dem Port 8080 von localhost zu
server_socket.bind(("localhost", 8080))
server_socket.listen(10)
#Warten Sie auf eine Verbindung von außen und stellen Sie eine Verbindung her, wenn eine Verbindung besteht
print("===Warten Sie auf eine Verbindung vom Client===")
(client_socket, address) = server_socket.accept()
print(f"===Die Verbindung mit dem Client ist vollständig remote_address: {address} ===")
#Holen Sie sich die vom Client gesendeten Daten
request = client_socket.recv(4096)
#Schreiben Sie die vom Client gesendeten Daten in eine Datei
with open("server_recv.txt", "wb") as f:
f.write(request)
#Rufen Sie die Antwortdaten ab, die aus der Datei an den Client gesendet werden sollen
with open("server_send.txt", "rb") as f:
response = f.read()
#Senden Sie eine Antwort an den Client
client_socket.send(response)
#Kommunikation beenden
client_socket.close()
finally:
print("===Stoppen Sie den Server.===")
if __name__ == '__main__':
server = TCPServer()
server.serve()
Erstellen wir auch eine "server_send.txt" für die Rückgabe.
server_send.txt
HTTP/1.1 200 OK
Date: Wed, 28 Oct 2020 07:57:45 GMT
Server: Apache/2.4.41 (Unix)
Content-Location: index.html.en
Vary: negotiate
TCN: choice
Last-Modified: Thu, 29 Aug 2019 05:05:59 GMT
ETag: "2d-5913a76187bc0"
Accept-Ranges: bytes
Content-Length: 45
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
Wechseln Sie in das Verzeichnis, in dem sich der Quellcode auf der Konsole befindet, und führen Sie das Programm mit dem folgenden Befehl aus.
$ python TCPServer.py
===Starten Sie den Server===
===Warten Sie auf eine Verbindung vom Client===
Lassen Sie die Registerkarte "Konsole" geöffnet und versuchen Sie, in Ihrem Browser auf "http: // localhost: 8080" zuzugreifen.
Es wurde sicher als Webseite angezeigt!
Mit Ausnahme von Kommentaren konnte ich einen ziemlich primitiven Webserver in etwas mehr als einem Dutzend Zeilen betreiben. (Im Moment ist es genauer, es als TCP-Server zu bezeichnen, nicht als weißen Server, der als Webserver bezeichnet werden kann ...)
Der beste Weg zu verstehen, wie alles funktioniert, ist es, es selbst zu machen.
Wenn Sie wissen möchten, wie Webserver und Webframeworks funktionieren, lesen Sie bitte unser Online-Buch. https://zenn.dev/bigen1925/books/e6c9492a82f5e2e10fca/viewer/504d96 Lesen Sie bitte!
Es gibt auch eine Beschreibung des Quellcodes für diesen Artikel.
Recommended Posts