This is a simple server. When you open the browser type into the address of the server, and it will response a status code and the content of the requested html. But when I add this sentence "connectionSocket.send('HTTP/1.1 200 OK')", nothing returned. When I removed it, the html returned. And another problem is when I send the request by web browser, there are two connect sent to the server, and one displays it wanna find a file named favicon.ico, but of course it is a IOError because there is not such a file on my server's root directory. Code is attached and thanks for help.
#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()