2017-08-23 1 views
-1

Depuis que je suis nouveau à la programmation, il peut y avoir d'autres erreurs dans le code que je n'ai pas détecté, donc si vous remarquez des erreurs ou un mauvais style en dehors. J'essaye de mettre en application un serveur Web simple, mais continue à obtenir une erreur d'indentation à la partie où le serveur crée un message de réponse HTTP composé du dossier demandé précédé par des lignes d'en-tête.'Indentation Error - attendu un bloc indenté' lors du traitement de l'en-tête

from socket import * 
import sys 

host = 'localhost' 
serverPort = int(sys.argv[1]) 
serverSocket = socket(AF_INET, SOCK_STREAM) 
serverSocket.bind((host,serverPort)) 
serverSocket.listen(1) 

while True: 
    connectionSocket, addr = serverSocket.accept() 

    try: 
     #if received correct stuff 
     File_Wanted = connectionSocket.recv(1024) 
     File_Name = File_Wanted.split()[1] 
     #open and read line in index.htm 
     File = open('index.htm','r') 
     output = File.read() 
     #should I close it here or somewhere else? 
     File.close() 

     #take care of header first 
     connectionSocket.send('HTTP/1.0 200 OK\r\n') 

     #looks good, then send to client(browser) 
     for i in range(0, len(output)): 
     connectionSocket.send(output[i]) 
     connectionSocket.close() 


    IOError: 
    #Send response message for file not found 
     connectionSocket.send('404 Not Found')      
    #Close client socket  
     connectionSocket.close()        


serverSocket.close() 

Quand je construis sur sublime, j'ai.

connectionSocket.send(output[i]) 
^ 

IndentationError: attendez un bloc identififiés règle

+3

Python utilise w hitespace pour définir les blocs, vous devez mettre en retrait les lignes après l'instruction 'for' – emredjan

+0

Essayez une indentation après serverSocket.close() – Oqhax

+0

lignes de retrait après' for' boucle pour le code qui devrait être dans le 'for' – WhatsThePoint

Répondre

0

Python utilise des espaces pour définir des blocs, vous devez mettre en retrait les lignes après la déclaration for:

for i in range(0, len(output)): 
    connectionSocket.send(output[i]) 
    connectionSocket.close() 

et vous avez besoin d'une déclaration except avant de vérifier l'erreur:

except IOError: