我正在尝试用Python实现一个服务器。当浏览器使用端口号9999连接到localhost时,它将打开该页面中index.html
的文件images.jpg
,但无法显示该图像。如何让Web服务器也处理图像?
到目前为止,这是我的代码:
from socket import *
import os
serversocket = socket(AF_INET, SOCK_STREAM)
port = 5000
host = '127.0.0.1'
size = os.path.getsize("index.html")
myfile = open('index.html', 'rb')
mycontent = "Welcome to Very Simple Web Server"
size = len(mycontent)
header = "HTTP/1.0 200 OK \r\n Content_Length:" + str(size) + "\r\n\r\n"
mycontent = myfile.read()
serversocket.bind((host, port))
serversocket.listen(5)
print('Server is listening on port 9999')
while (1):
conn, addr = serversocket.accept()
print('Connected by', addr)
conn.send(bytes(header))
conn.send(mycontent)
conn.close()
答案 0 :(得分:1)
您的代码会创建一个无限循环,只会发送一个文件,而且永远不会接受其他连接。
为了显示图像,浏览器必须向图像的URL发送另一个请求,并且您的代码不会为此请求提供服务。
为了让您的服务器正常工作,您需要:
要显示包含一个图像的HTML页面,需要两个请求,一个用于HTML页面,另一个用于图像。如果HTML代码有一个指向CSS文件的链接,那么现在需要三个请求 - 一个用于HTML页面,一个用于CSS文件,最后一个用于图像。所有这些请求都需要成功完成,以便浏览器呈现页面。
您永远不需要手动执行此操作,使用web development framework来处理所有这些"无聊"所以你可以解决实际问题。