博客
关于我
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
阅读量:797 次
发布时间:2023-03-07

本文共 1365 字,大约阅读时间需要 4 分钟。

Python HTTP服务器代码示例

本文将介绍如何使用Python编写一个简单的HTTP服务器。该服务器能够接收客户端请求并返回响应,适合用于开发和测试环境。

1. 初始化socket库

首先,我们需要导入socket库,该库用于网络通信。代码如下:

import socket
import datetime

2. 创建socket对象

接下来,创建一个socket对象。默认情况下,socket对象用于数据传输,我们需要将其绑定到特定的IP地址和端口。

s = socket.socket()

3. 绑定IP地址和端口

我们需要指定服务器监听的IP地址和端口。以下代码设置了绑定的IP地址为localhost,端口为80(默认HTTP端口)。

host = "localhost"
port = 80
s.bind((host, port))

4. 设置服务器信息

服务器名称和版本号可以通过设置server_name变量来实现。

server_name = "MyServerDemo/0.1"

5. 设置缓存时间

为了提升性能,我们可以为响应设置缓存时间。以下代码将缓存时间设置为1天。

expires = datetime.timedelta(days=1)

6. 定义响应格式

我们需要确保响应符合HTTP协议规范。以下代码定义了响应格式,包括服务器信息、日期、缓存时间、内容类型和内容长度等。

GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'
content = '''

Coming Soon

'''

7. 启用监听

为了接收客户端连接,我们需要设置监听的最大数量。以下代码设置为5个同时连接。

s.listen(5)

8. 处理客户端请求

在服务器循环中,我们接收客户端连接并处理其请求。

while True:
c, addr = s.accept()
print('Got connection from ', addr)

9. 接收和显示请求信息

接收客户端发送的数据并打印。

data = c.recv(1024)
print(data)

10. 发送HTTP响应

根据HTTP协议规范,构建响应头和内容。以下代码生成一个简单的HTML响应。

now = datetime.datetime.utcnow()
response = '''HTTP/1.1 200 OK
Server: %s
Date: %s
Expires: %s
Content-Type: text/html;charset=utf-8
Content-Length: %s
Connection: keep-alive
%s''' % (server_name, now.strftime(GMT_FORMAT), (now + expires).strftime(GMT_FORMAT), len(content), content)

11. 发送响应并关闭连接

将响应发送给客户端并关闭连接。

c.send(response)
c.close()

以上代码提供了一个基本的HTTP服务器实现,适合用于开发和测试。通过修改内容、增加功能或配置更多选项,可以根据具体需求进行扩展。

转载地址:http://rhofk.baihongyu.com/

你可能感兴趣的文章
Python 内置时间模块
查看>>
python 内部如何实现命名元组?
查看>>
Python 写Android App性能:入门到高级
查看>>
python 写入json数据到数据库
查看>>
Python 出现 TypeError: ‘encoding‘ is an invalid keyword argument for this function 解决方法
查看>>
python 出现 TypeError: ‘list‘ object is not callable 的解决方法
查看>>
python 函数1
查看>>
python 函数学习
查看>>
Python 分析天气,告诉你中秋应该去哪里
查看>>
Python 列表删除相同的元素
查看>>
Python 初学者需要知道的四条建议
查看>>
Python 判断字符串是否包含子字符串
查看>>
python 判断当前时间是否为零点
查看>>
python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
查看>>
python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
查看>>
python 利用pyttsx3文字转语音
查看>>
python 利用已有Ner模型进行数据清洗合并
查看>>
python 到大数据开发工程师_如何成为一个大数据开发工程师?
查看>>
python 加密解密(base64, AES)
查看>>
Python 和Java 哪个更适合做自动化测试?
查看>>