У меня возникли трудности с получением данных с сервера на python. Я получаю дескриптор файловой системы Errno 9 и сообщение «соединение было сброшено» в моем браузере всякий раз, когда я пытаюсь получить доступ к моему тестовому html-файлу. Код выглядит следующим образом:errno 9 дескриптор файлового файла, базовый сокет сервера python
#import socket module
from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
serverPort = 12000
#Prepare a sever socket
serverSocket.bind(("", serverPort))
serverSocket.listen(1)
while True:
#Establish the connection
print 'Ready to serve...'
connectionSocket, addr = serverSocket.accept()#Accepts a TCP client connection, waiting until connection arrives
print 'Required connection', addr
try:
message = connectionSocket.recv(64)
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()
#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()
Я не могу сказать, почему я получаю эту ошибку. Я попытался удалить закрытие справа от выходных данных для цикла, и это тоже не сработало. Я попытался изменить порт сервера и закрыть сокет и сервер в разных заказах.
полный Trackback является:
Traceback (most recent call last):
File "UDPServer.py", line 13, in <module>
connectionSocket, addr = serverSocket.accept()#Accepts a TCP client connection, waiting until connection arrives
File "C:\Anaconda\lib\socket.py", line 202, in accept
sock, addr = self._sock.accept()
File "C:\Anaconda\lib\socket.py", line 170, in _dummy
raise error(EBADF, 'Bad file descriptor')
socket.error: [Errno 9] Bad file descriptor