This is a simple server. When you open the browser type in the server address, it will respond to the status code and the contents of the requested html. But when I add this sentence "connectionSocket.send (" HTTP / 1.1 200 OK "), nothing is returned. When I deleted it, returned html. And another problem is when I send the request with a web browser to the server two connections are sent, and one of them wants to find a file called favicon.ico, but of course it is IOError, because it doesnโt have such a file on it. my server root directory. The code is attached and thanks for the 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 ()
source share