Cet article est le livre en ligne de Zenn
"Introduction à l'application Web Python auto-conçue pour l'ingénieur Web de 3e année qui est lent"
Ceci est un extrait partiel de.
Ici https://qiita.com/bigen1925/items/dde5575da6c45a91808d Veuillez également lire.
Du coup, créons un serveur qui reçoit une requête d'un navigateur et renvoie une réponse au navigateur avec Python.
Le programme suivant démarre en tant que serveur sur le port 8080 (localhost: 8080
) de votre PC, et lorsqu'il reçoit une requête du navigateur, il écrit son contenu dans un fichier appelé server_recv.txt
, puis server_send.txt
Le contenu du fichier est lu et renvoyé au navigateur en tant que réponse.
TCPServer.py
import socket
class TCPServer:
"""
Une classe qui représente un serveur qui effectue une communication TCP
"""
def serve(self):
"""
Démarrez le serveur
"""
print("===Démarrez le serveur===")
try:
#Générer une socket
server_socket = socket.socket()
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
#Attribuez le socket au port 8080 de localhost
server_socket.bind(("localhost", 8080))
server_socket.listen(10)
#Attendez une connexion de l'extérieur et établissez une connexion s'il y a une connexion
print("===Attendez une connexion du client===")
(client_socket, address) = server_socket.accept()
print(f"===La connexion avec le client est complète à distance_address: {address} ===")
#Récupérez les données envoyées par le client
request = client_socket.recv(4096)
#Ecrire les données envoyées par le client dans un fichier
with open("server_recv.txt", "wb") as f:
f.write(request)
#Récupérer les données de réponse à envoyer au client à partir du fichier
with open("server_send.txt", "rb") as f:
response = f.read()
#Envoyer une réponse au client
client_socket.send(response)
#Mettre fin à la communication
client_socket.close()
finally:
print("===Arrêtez le serveur.===")
if __name__ == '__main__':
server = TCPServer()
server.serve()
Créons également un server_send.txt
pour le retour.
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>
Accédez au répertoire où le code source est placé sur la console et exécutez le programme avec la commande suivante.
$ python TCPServer.py
===Démarrez le serveur===
===Attendez une connexion du client===
Gardez l'onglet de la console ouvert et essayez d'accéder à http: // localhost: 8080
dans votre navigateur.
Il a été affiché comme une page Web en toute sécurité!
À l'exception des commentaires, j'ai pu exécuter un serveur Web assez primitif en un peu plus d'une douzaine de lignes. (Pour le moment, il est plus exact de l'appeler un serveur TCP, pas un serveur blanc que l'on peut appeler un serveur Web ...)
La meilleure façon de comprendre comment tout fonctionne est de le fabriquer soi-même.
Si vous souhaitez comprendre le fonctionnement des serveurs Web et des frameworks Web, veuillez consulter notre livre en ligne. https://zenn.dev/bigen1925/books/e6c9492a82f5e2e10fca/viewer/504d96 Lisez s'il vous plaît!
Il existe également une description du code source de cet article.
Recommended Posts