Python - Problema envio de imagen por socket

 
Vista:

Problema envio de imagen por socket

Publicado por Gregorio (1 intervención) el 24/04/2018 19:28:42
Hola, tengo una práctica en la que necesito enviar el contenido de una página web a un navegador, basicamente un mini servidor web. El texto Html me lo manda y muestra sin problemas pero la imagen que tiene la página no soy capaz de hacerlo, me aparecen letras y números sin sentido. Alguna idea de que estoy haciendo mal?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import socket, os, mimetypes
 
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 14005))
server_socket.listen(10)
 
try:
    while True:
        print 'waiting client'
        client_socket, client_address = server_socket.accept()
        print 'processing client'
        request = ''
        tot_req = ''
        while True:
            request = client_socket.recv(4096)
            tot_req += request
            if request.endswith('\r\n\r\n'):
                break
        i = 0
        status_code = ''
        uri = ''
        if tot_req[0:3] == 'GET':
            uri = tot_req[4:tot_req.find('HTTP/')]
            uri = uri[1:len(uri) - 1]
            if os.path.exists(uri) or not uri:
                if not uri:
                    uri = 'index.html'
                print uri
                opened_file = open(uri, 'rb')
                passing = opened_file.read()
                types = mimetypes.guess_type(uri)[0]
                if str(types) == 'None':
                    types = 'application/' + uri[uri.find('.') + 1:]
                print types
 
		archivo = open('logo.jpg', 'rb')
                foto = archivo.read()
                types2 = mimetypes.guess_type("logo.jpg")
		print types2
 
 
 
		header = 'HTTP/1.1 200 OK\r\nContent-Length: ' + str(len(passing + foto)) + '\r\nContent-Type: ' + str(types) + '\r\nContent-Type: ' + str(types2) +'\r\nConnection: close\r\n\r\n'
 
		passing = passing + foto
                response = header + passing
 
		client_socket.sendall(response)
                client_socket.close()
                opened_file.close()
 
            else:
                passing = "<html><head><title>Web Server</title></head><body><center><h1>The Page You've Requested is Not Found (Return 404)</h1><h2>" + uri + " not Found</h2></center></body></html>"
                header = 'HTTP/1.1 404 Not Found\r\nContent-Length: ' + str(len(passing)) + '\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n'
                response = header + passing
                while i < len(response):
                    if i + 4096 < len(response):
                        client_socket.send(response[i:i + 4096])
                    else:
                        client_socket.send(response[i:])
                    i += 4096
                client_socket.close()
except:
    server_socket.close()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder