Я пытаюсь завершить эту лабораторную работу, но не могу заставить ее работать правильно.Когда я пытаюсь получить файл, отсутствующий на сервере, мне дают
Эта страница не работает 127.0.0.1 отправил неверный ответ.ERR_INVALID_HTTP_RESPONSE
Ответ, который я хотел бы получить, выглядит следующим образом:
404 Файл не найден
Когда я пытаюсь загрузитьфайл отсутствует, компилятор сообщает для строки 16:
filename = message.split () [1] IndexError: список индексов выходит за пределы
Код компилируетсяи я могу открыть файл Hello World, но я просто не могу получить эту ошибку 404.Мне дали код скелета, поэтому есть некоторые вещи, которые я не могу изменить, не отклоняясь от материала курса.
from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
#Prepare a server socket
serverPort = 7000
serverSocket.bind(('127.0.0.1', serverPort))
serverSocket.listen(5)
while True:
print('Ready to serve...')
connectionSocket, addr = serverSocket.accept()
#Fill in start #Fill in end
try:
message = connectionSocket.recv(1024)
print (message)
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()
#Send one HTTP header line into socket
#Fill in start
connectionSocket.send('\nHTTP/1.x 200 OK\n'.encode())
#Fill in end
#Send the content of the requested file to the client
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i].encode())
connectionSocket.send("\r\n".encode())
connectionSocket.close()
print ('File Recieved')
except IOError:
connectionSocket.send('\n404 File Not Found\n'.encode())
connectionSocket.close()
#Close client socket
serverSocket.close()
sys.exit()
Код скелета выглядит как Python 2, и я использую Python 3. I 'Мы внесли некоторые незначительные изменения в синтаксис.
Удаление print (message) приводит к появлению «File Recceive» в компиляторе, но в браузере по-прежнему отсутствует ошибка 404.Я в растерянности через 8 часов.