Я работаю над своим первым программным кодом для сокета Python, и я не могу понять, что не так. Я набираю IP-адрес сервера, на котором работает эта программа, вместе с номером порта и файлом, который я пытаюсь получить. Я должен получить файл в браузере и сокет должен закрыть. Вместо этого сервер печатает строку печати «Готов к обслуживанию ...» три раза, отображает «404 Not Found» в браузере и никогда не закрывает сокет. У кого-нибудь есть идеи?Python Socket Programming Простой веб-сервер
#import socket module
from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
#Prepare a sever socket
serverSocket.bind(('', 12006))
serverSocket.listen(1)
while True:
print 'Ready to serve...'
#Establish the connection
connectionSocket, addr = serverSocket.accept()
try:
message = connectionSocket.recv(1024)
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()
f.close()
#Send one HTTP header line into socket
connectionSocket.send('HTTP/1.0 200 OK\r\n\r\n')
#Send the content of the requested file to the client
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i])
connectionSocket.close()
except IOError:
#Send response message for file not found
connectionSocket.send('404 Not Found')
#Close client socket
connectionSocket.close()
serverSocket.close()
Как вы знаете, он никогда не закрывает розетку? – rlms
Попробуйте напечатать объект исключения IOError, который может дать больше информации. Вы могли бы открыть IOError из файла. Python 2 или 3? – cdarke
Я пробовал его в python 2.7.5 и Windows Vista, и он работает. – rafalopez79