gpt4 book ai didi

python - 简单的 Python Web 服务器问题

转载 作者:行者123 更新时间:2023-12-03 11:53:17 27 4
gpt4 key购买 nike

我正在尝试使用套接字库编写一个 python Web 服务器。我已经通过几个来源,无法弄清楚为什么我编写的代码不起作用。其他人运行了非常相似的代码并声称它有效。我是 python 新手,所以我可能会遗漏一些简单的东西。

它现在工作的唯一方法是将数据变量发送回客户端。浏览器打印原始 GET 请求。当我尝试发送 HTTP 响应时,连接超时。

import socket

##Creates several variables, including the host name, the port to use
##the size of a transmission, and how many requests can be handled at once
host = ''
port = 8080
backlog = 5
size = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(16)
if data:
client.send('HTTP/1.0 200 OK\r\n')
client.send("Content-Type: text/html\r\n\r\n")
client.send('<html><body><h1>Hello World</body></html>')

client.close()
s.close()

最佳答案

您需要在响应之前使用输入,并且不应在 while 循环中关闭套接字:

  • 替换 client.recv(16)client.recv(size) , 消费请求。
  • 移动你的最后一行,s.close()返回一个缩进,使其不在您的 while 循环中。目前您正在关闭连接,然后尝试 accept再次从它,所以你的服务器将在第一次请求后崩溃。

  • 除非您将此作为练习,否则您应该扩展 SimpleHTTPServer而不是直接使用套接字。

    此外,在创建套接字之后(绑定(bind)之前)添加此行可以修复您可能遇到的任何“地址已在使用”错误。
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    祝你好运!

    关于python - 简单的 Python Web 服务器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111749/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com