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
0