Я знакомлюсь с сетевым курсом, и мы учимся программировать базовый c TCP-сервер.
Моя настройка: Назначение вызывает сервер, веб-сервер которого обрабатывает один HTTP-запрос за раз. Мой веб-сервер должен «принять и проанализировать HTTP-запрос, получить запрошенный файл из файловой системы сервера, создать ответное сообщение HTTP, состоящее из запрошенного файла, которому предшествуют строки заголовка, а затем отправить ответ непосредственно клиенту. Если запрошено файл отсутствует на сервере, сервер должен отправить клиенту сообщение HTTP «404 Not Found». " У меня есть сервер, закодированный в Python (см. Ниже), и, насколько я могу судить, код точен. В том же каталоге я также создал простой файл hello world html, поэтому у меня есть к чему обратиться.
Запуск моего сервера: Когда я запускаю код, терминал ожидал сообщения «готово к обслуживанию ...» и прослушивал соединение. Это правильно.
Затем, когда я набираю URL в своем браузере (я пробовал оба http://localhost: 1001 и http://localhost: 1001 / HelloWorld. html) браузер сообщает, что не может подключиться.
Невозможно подключить экран из браузера
Я почти уверен, что либо неправильно подключаюсь к серверу в качестве клиента, либо если мой windows компьютер не работает Неправильно настроен, но любой совет о том, как подключиться и получить мой запрос к серверу, будет принята с благодарностью.
#import socket module
from socket import *
import sys # In order to terminate the program
serverSocket = socket(AF_INET, SOCK_STREAM)
#Prepare a sever socket
serverPort = 1001
serverSocket.bind(('',serverPort))
serverSocket.listen(1)
while True:
#Establish the connection
print('Ready to serve...')
connectionSocket, addr = serverSocket.accept()
try:
message = connectionSocket.recv(1024).decode()
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()
#Send one HTTP header line into socket
#Fill in start
header = 'HTTP/1.1 200 OK\n'
connectionSocket.send(header.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()
except IOError:
#Send response message for file not found (404)
#Fill in start
error = 'HTTP/1.1 404 Not Found'
connectionSocket.send(error.encode())
#Fill in end
#Close client socket
#Fill in start
connectionSocket.close()
#Fill in end
serverSocket.close()
sys.exit() #Terminate the program after sending the corresponding data