python bad file descriptor_OSError: [Errno 9] Bad file descriptor in python 3

问题

I'm a beginning/intermediate level programmer currently trying to write a simple web server in Python 3. However, whenever I run the module I get OSError: [Errno 9] Bad file descriptor. I've scoured the internet looking for answers, but I can't seem to figure this one out on my own. Here is the code and traceback:

#import socket module

from socket import *

serverSocket=socket(AF_INET,SOCK_STREAM)

#Prepare a server socket

serverSocket.bind(('IP address', 8000))

serverSocket.listen(1)

while True:

#Establish the connection

print('Ready to serve...')

(connectionSocket, addr) = serverSocket.accept()

print ('connected from',addr)

try:

message=connectionSocket.recv(1024)

filename=message.split()[1]

print (filename)

filename=message.split()[1]

f=open(filename[1:])

outputdata=f.read()

#Send one HTTP header line into socket

connectionSocket.send('HTTP/1.1 200 OK')

#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 as err:

print ('IO error')

#Send response message for file not found

connectionSocket.send(b'file not found')

#Close client socket

connectionSocket.close()

serverSocket.close()

Traceback:

Traceback (most recent call last):

File "/Users/BigRed/Desktop/SOS/webServer.py", line 17, in

(connectionSocket, addr) = serverSocket.accept()

File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/socket.py", line 184, in accept

fd, addr = self._accept()

OSError: [Errno 9] Bad file descriptor

回答1:

When there is a OIError, you're calling serverSocket.close(). But when you re-enter in the while loop, you call serverSocket.accept() without call serverSocket=socket(AF_INET,SOCK_STREAM), and this fails, because you've called the close()

See this post

Hope help

PD: django developers don't use socket regularly. =)

来源:https://stackoverflow.com/questions/19624684/oserror-errno-9-bad-file-descriptor-in-python-3

你可能感兴趣的:(python,bad,file,descriptor)