我正在创建我的python web服务器,它将把当前目录中的html文件称为“index”,读取代码并将其作为响应发送,但我看到当我想显示图像时,它没有'工作,有人可以帮我吗?
#server.py
import socket
port = 8080
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind(('', port))
listen_socket.listen(1)
print 'Serving on port '+str(port)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print request
response = """\
HTTP/1.1 200 OK
Content-type:text/html\r\n\r
"""
f = open("index.html", 'r')
content = f.read()
client_connection.sendall(response+content)
client_connection.close()
这是我想要显示的HTML代码
<!--index.html-->
<html>
<body>
<p>image:</p>
<img src="img.jpg" />
</body>
</html>
如果可以直接从网址获取图像,也会更好。 提前谢谢。
答案 0 :(得分:0)
图像未呈现,因为您没有发送您刚刚发送html页面的图像。
您需要识别请求并根据该请求发送资源。 我试着调整你的代码。它正确显示我的图像。
# server.py
import socket
port = 8080
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind(('', port))
listen_socket.listen(1)
print 'Serving on port ' + str(port)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print request
if request.split()[1] == '/':
headers = ("HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n"
"\r\n")
f = open("index.html", 'r')
elif request.split()[1] == '/img.jpg':
headers = ("HTTP/1.1 200 OK\r\n"
"Content-Type: image/jpeg\r\n"
"\r\n")
f = open("img.jpg", 'r')
content = f.read()
client_connection.sendall(headers + content)
client_connection.close()
如果您想要提供的不仅仅是一个页面,请查看Django,Flask等一些Web框架。