欢迎访问宙启技术站
智能推送

使用accept()方法在Python中实现简单的web服务器

发布时间:2023-12-23 02:55:20

要在Python中实现一个简单的Web服务器,可以使用socket模块。具体步骤如下:

1. 导入socket模块:

import socket

2. 创建一个socket对象:

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

socket.AF_INET表示使用IPv4地址,socket.SOCK_STREAM表示使用TCP协议。

3. 绑定服务器地址和端口:

server_address = ('localhost', 8000)
server_socket.bind(server_address)

在这个例子中,服务器地址是localhost,端口是8000。你也可以使用其他地址和端口。

4. 监听连接:

server_socket.listen(1)

这里指定服务器最多只能同时处理一个连接,可以根据需要进行更改。

5. 接受连接:

print("Server is up and running...")
client_socket, client_address = server_socket.accept()

accept()方法返回一个新的socket对象和连接的客户端地址。

6. 接收请求:

request = client_socket.recv(1024).decode('utf-8')

这里指定接收请求的最大字节数为1024,并将其解码为utf-8编码。

7. 处理请求:

在这个简单的例子中,我们只是打印接收到的请求:

print(f"Request from client: {request}")

8. 发送响应:

response = "HTTP/1.1 200 OK
Content-Type: text/html

Hello, World!"
client_socket.sendall(response.encode('utf-8'))

这里使用HTTP/1.1协议发送一个简单的HTML响应。

9. 关闭连接:

client_socket.close()

10. 关闭服务器:

server_socket.close()

完整的示例代码如下:

import socket

# 创建socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定服务器地址和端口
server_address = ('localhost', 8000)
server_socket.bind(server_address)

# 监听连接
server_socket.listen(1)
print("Server is up and running...")

while True:
    # 接受连接
    client_socket, client_address = server_socket.accept()

    # 接收请求
    request = client_socket.recv(1024).decode('utf-8')
    print(f"Request from client: {request}")

    # 发送响应
    response = "HTTP/1.1 200 OK
Content-Type: text/html

Hello, World!"
    client_socket.sendall(response.encode('utf-8'))

    # 关闭连接
    client_socket.close()

# 关闭服务器
server_socket.close()

你可以通过在浏览器中访问http://localhost:8000来测试这个简单的Web服务器。你将在浏览器中看到"Hello, World!"的响应。