为了账号安全,请及时绑定邮箱和手机立即绑定

用Python实现的HTTP服务器无法显示图片

用Python实现的HTTP服务器无法显示图片

POPMUISE 2019-04-13 08:46:08
#-.-coding:utf-8-.-'''Createdon2011-11-19@author:icejoywoo'''importsocketimportdatetime#初始化sockets=socket.socket()#获取主机名,也可以使用localhost#host=socket.gethostname()host="localhost"#默认的http协议端口号port=80#绑定服务器socket的ip和端口号s.bind((host,port))#服务器名字/版本号server_name="MyServerDemo/0.1"#缓存时间,缓存一天expires=datetime.timedelta(days=1)#GMT时间格式GMT_FORMAT='%a,%d%b%Y%H:%M:%SGMT'#相应网页的内容content='''MyServerDemo/0.1Hello,World!'''#f=open("index.html")#content=f.read()#printcontent#可同时连接五个客户端s.listen(5)#提示信息print"YoucanseeaHelloWorldfromthisserverinurbrowser,typein",host,"\r\n"#服务器循环whileTrue:#等待客户端连接c,addr=s.accept()print"Gotconnectionfrom",addr,"\r\n"#显示请求信息print"--RequestHeader:"#接收浏览器的请求,不作处理data=c.recv(1024)printdata#获得请求的时间now=datetime.datetime.utcnow()#相应头文件和内容response='''HTTP/1.1200OKServer:%sDate:%sExpires:%sContent-Type:text/html;charset=utf8Content-Length:%sConnection:keep-alive%s'''%(server_name,now.strftime(GMT_FORMAT),(now+expires).strftime(GMT_FORMAT),len(content),content)#发送回应c.send(response)print"--Response:\r\n",responsec.close()我感觉问题应该是出在content和response上,其中content='''MyServerDemo/0.1Hello,World!'''response='''HTTP/1.1200OKServer:%sDate:%sExpires:%sContent-Type:text/html;charset=utf8Content-Length:%sConnection:keep-alive%s'''%(server_name,now.strftime(GMT_FORMAT),(now+expires).strftime(GMT_FORMAT),len(content),content)用firebug调试时,显示结果是载入指定url失败,但python.jpg跟这个.py文件在同一目录下,怎么会无法读取呢?
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

当然,你需要根据GET请求判断请求的路径,然后查找文件,不存在返回404界面,存在的话,先将他们读取为bytes,然后判断一下content-type(这个必须的,不然客户端肯定不能正常识别),然后先发送头,再发送刚刚得到的bytes,ok~~~
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 727 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号