这是一个简单的服务器。当你打开浏览器输入服务器地址时,它会响应一个状态码和请求的 html 的内容。但是当我添加这句话“connectionSocket.send('HTTP/1.1 200 OK')”时,没有任何返回。当我删除它时,html 返回了。另一个问题是当我通过网络浏览器发送请求时,有两个连接发送到服务器,一个显示它想找到一个名为 favicon.ico 的文件,但当然它是一个 IOError 因为没有这样的文件我服务器的根目录。附上代码,感谢您的帮助。
#import socket module from socket import * serverSocket = socket(AF_INET,SOCK_STREAM) #prepare a server socket serverSocket.bind(('192.168.0.101', 8765)) 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 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: print 'IOError' #Send response message for file not found connectionSocket.send('file not found') #Close Client socket connectionSocket.close() serverSocket.close()
最佳答案
您需要在 HTTP header 的末尾添加换行符 (\r\n\r\n
):
connectionSocket.send('HTTP/1.1 200 OK\r\n\r\n')
此外,您可能应该使用更高级别的库来编写您的 HTTP 服务器...
关于python - 遇到有关 python 编写的简单服务器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840296/