我正在尝试使用套接字库编写一个pythonweb服务器。我查了好几个资料来源,不明白为什么我写的代码不起作用。其他人运行了非常相似的代码,并声称它可以工作。我是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)
,以使用请求。{cd3>不是你的最后一行。此时您正在关闭连接,然后再次尝试从中
accept
,因此您的服务器将在第一次请求后崩溃。除非您将此作为练习进行,否则应该扩展SimpleHTTPServer,而不是直接使用套接字。在
另外,在创建套接字(绑定之前)之后添加这行代码可以修复您可能遇到的任何“地址已在使用中”错误。在
祝你好运!在
相关问题 更多 >
编程相关推荐