📜  网络编程Python – HTTP 服务器

📅  最后修改于: 2022-05-13 01:54:27.378000             🧑  作者: Mango

网络编程Python – HTTP 服务器

HTTP Web 服务器只是一个运行在机器上的进程,它通过特定的 IP 和端口号侦听传入的 HTTP 请求,然后发回请求的响应。

Python有一个由其标准库提供的内置网络服务器,可以调用它进行简单的客户端-服务器通信。 http.serversocketserver是用于创建 Web 服务器的两个主要功能。端口号可以在用于访问网络服务器的程序中手动定义。此 Web 服务器可用于多种类型的文件格式,但功能不全。通过使用所需的响应代码进行响应,可以轻松解析和提供简单的静态 HTML 文件。下面给出了Python HTTP Web服务器的基本实现:

示例 HTML 文件:

Python3
# Import libraries
import http.server
import socketserver
  
# Defining PORT number
PORT = 8080
  
# Creating handle
Handler = http.server.SimpleHTTPRequestHandler
  
# Creating TCPServer
http = socketserver.TCPServer(("", PORT), Handler)
  
# Getting logs
print("serving at port", PORT)
http.serve_forever()


Python3
# Import libraries
import sys
import http.server
import socketserver
  
# Creating handle
HandlerClass = http.server.SimpleHTTPRequestHandler
  
# Creating Server
ServerClass  = http.server.HTTPServer
  
# Defining protocol
Protocol     = "HTTP/1.0"
  
# Setting TCP Address
if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
server_address = ('127.0.0.1', port)
  
# invoking server
HandlerClass.protocol_version = Protocol
http = ServerClass(server_address, HandlerClass)
  
# Getting logs
sa = http.socket.getsockname()
print("Serving HTTP on", sa[0], "port", sa[1], "...")
http.serve_forever()


输出:

serving at port 8080
127.0.0.1 - - [17/Oct/2020 00:31:27] "GET / HTTP/1.1" 200 -



在保存 HTML 文件的目录中执行上述程序。创建 Web 服务器后,打开 Web 浏览器并在 URL 中键入http://localhost:8080/

在这里, SimpleHTTPRequestHandler用于创建自定义处理程序。 TCPServer告诉服务器发送和接收消息。要调用TCPServer ,需要两个参数,即 TCP 地址,即 IP 和 PORT,第二个参数是处理程序。 TCP 地址是一个由 IP 地址和端口号组成的元组。 Serve_forever()TCPServer实例的一个函数,它启动服务器并监听和响应传入的请求。

localhost是主机(在我们的例子中是我们正在使用的系统),用于使用环回网络接口访问网络服务。

如果Python程序仅用作 localhost 服务,则以下程序用于此目的:

蟒蛇3

# Import libraries
import sys
import http.server
import socketserver
  
# Creating handle
HandlerClass = http.server.SimpleHTTPRequestHandler
  
# Creating Server
ServerClass  = http.server.HTTPServer
  
# Defining protocol
Protocol     = "HTTP/1.0"
  
# Setting TCP Address
if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
server_address = ('127.0.0.1', port)
  
# invoking server
HandlerClass.protocol_version = Protocol
http = ServerClass(server_address, HandlerClass)
  
# Getting logs
sa = http.socket.getsockname()
print("Serving HTTP on", sa[0], "port", sa[1], "...")
http.serve_forever()

输出: