У меня проблемы с тем, чтобы мой очень простой и простой 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()
Ошибка исходит из открытого оператора. Я не совсем понимаю, как организовано возвращаемое значение этой строки кода.
message = connectionSocket.recv(1024)
Я знаю, что возвращаемое значение находится в байтах, но когда я пытаюсь использовать функцию, чтобы превратить ее в строку, такую как decode (), я тоже получаю ошибки
У меня есть файл .py и html, которые находятся в одном каталоге на моем локальном компьютере, и я проверяю это, я просто запускаю его, открываю браузер и набираю
http://127.0.0.1:4567/helloworld.html
Затем мой код сразу вылетает после получения HTTP-запроса. Любая помощь будет принята с благодарностью!