【发布时间】:2017-02-27 10:05:22
【问题描述】:
我无法让我的非常基本和简单的 TCP 服务器正确处理 http 请求。这就是我目前所拥有的
from socket import *
import sys
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', 4567))
serverSocket.listen(1)
while True:
print('Ready to serve...')
connectionSocket, addr = serverSocket.accept()
print("connected from: ", addr)
try:
message = connectionSocket.recv(1024)
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()
connectionSocket.send("HTTP/1.1 200 OK\r\n")
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i].encode())
connectionSocket.send("\r\n".encode())
connectionSocket.close()
except IOError:
connectionSocket.send("file not found")
serverSocket.close()
sys.exit()
错误来自 open 语句。我不完全理解这行代码的返回值是如何组织的。
message = connectionSocket.recv(1024)
我知道返回值是以字节为单位的,但是当我尝试使用函数将其转换为像 decode() 这样的字符串时,我也会出错
我的 .py 文件和 html 文件位于本地计算机上的同一目录中,我测试它的方式是我只是运行它并打开浏览器并输入
http://127.0.0.1:4567/helloworld.html
我的代码在收到 HTTP 请求后立即崩溃。 任何和所有的帮助将不胜感激!
【问题讨论】:
-
"我也有错误"什么错误? “我的代码在收到 HTTP 请求后立即崩溃。”你知道它为什么会崩溃吗?
标签: python sockets http tcp decode