我试图制作一个简单的http服务器,它可以作为客户端通过web浏览器访问,只使用python3中的sockets模块。我已经对http响应如何处理其头有了一些了解。实际上我通过Chrome开发工具确认浏览器能够理解我的回答,但是图像无法显示(它只在浏览器中显示黑屏,意味着图像有问题)。我的猜测是我没有正确地将图像的主体连接到响应字符串,或者我没有正确地编码它。这是我的代码:import socket

import base64

import os

HOST_N = socket.gethostname()

HOST, PORT = socket.gethostbyname(HOST_N), 10080

print(HOST)

listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_IP)

listen_socket.bind((HOST, PORT))

listen_socket.listen(1)

print('Serving HTTP on port %s ...' % PORT)

while True:

client_connection, client_address = listen_socket.accept()

request = client_connection.recv(1024)

option = request.decode().split(' ')

print(request)

if option[1]:

if option[1]=='/success.jpg':

with open("success.jpg", "r+b") as image_file:

encoded_string = base64.b64encode(image_file.read())

size = str(os.path.getsize("success.jpg"))

HTTP_RESPONSE = "HTTP/1.1 200 OK\r\n" + "Connection: close\r\n" + "Content-Type: image/jpg\r\n" + "Content-Lenght: "+ size + "\r\n\r\n" + str(encoded_string)

print(HTTP_RESPONSE)

client_connection.sendall(HTTP_RESPONSE.encode('ASCII'))

else:

with open("404.jpg", "r+b") as image_file:

encoded_string = base64.b64encode(image_file.read())

size = str(os.path.getsize("404.jpg"))

HTTP_RESPONSE = "HTTP/1.1 200 OK\n" + "Connection: close\n" + "Content-Type: image/jpg\n" + "Content-Lenght: "+ size + "\n\n" + str(encoded_string)

client_connection.sendto(HTTP_RESPONSE.encode('ASCII'), (HOST, PORT))

else:

pass

client_connection.close()

目前使用的是python3.5.2和初级OS 0.4.1loki。在

服务器网口显示图像,简单的python3web服务器,可以在浏览器中显示图像相关推荐

  1. python搭建web服务器_Python搭建简单的web服务器

    Python搭建简单的web服务器 1.win+R输入cmd打开命令行 2.通过 cd 进入到你保存 HTML 文件的目录.例如:H:\D3\d3 输入 cd\ 指令进入到C盘的根目录.(CD(更改目 ...

  2. web服务器python_一个简单的web服务器(python)

    今天用python写一个简单的web服务器代码网上都有只是为了方便大家学习做了一个简单的教程 第一首先我们来一张架构以及运行过程的流程图 本文学习仅供参考,需要更多资料可以加群:496257369 简 ...

  3. python 做网站用服务器_Python实现简单的Web服务器 Part2—支持动态网站

    1. 什么是CGI? CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程 ...

  4. centos7自带邮件服务器,CentOS7搭建简单的邮件服务器

    邮件服务器 概述 邮件收.发服务器是分开的,也就是我们需要搭建一个邮件发送服务器和一个邮件收取服务器. 本文会搭建收.发两个服务器,并用邮件客户端(Foxmail)做测试. 协议 协议就是定义规则,这 ...

  5. Vue.js如何写一个简单的原生js模块,浏览器中的表现如何?

    2019独角兽企业重金招聘Python工程师标准>>> 浏览器正在逐步的支持原生JavaScript模块.Safari和Chrome的最新版本已经支持它们了,Firefox和Edge ...

  6. c++连接云服务器_如何简单搭建Minecraft服务器

    前置需求: 1.能够24小时不间断运行的计算机 2.公网IP地址 或: 一台云服务器 由于服务器硬件需要自行维护,公网IP申请也有一定难度,会带来许多不必要的麻烦,因此如果只是跟朋友一起玩,服务器人数 ...

  7. java 搭建http服务器_搭建简单的HTTP服务器

    这是在<深入剖析Tomcat>一书中的一个小例子,通过这个例子让我基本了解了HTTP服务器的基本工作原理,特此分享给大家. package com.sun.test; import jav ...

  8. 会议系统m900服务器网口灯,中兴视频会议mcu服务器zxv10-m900

    产品介绍 M900采用一体化嵌入式设计,具有操作简单,可靠性高,性能优异等特点,适合为中小型企业构建简单易用和管理方便的视讯系统. ZXV10 M900支持ITU-T H.323.H.320和SIP协 ...

  9. 网络基础 2-1(应用层,HTTP三点注意,HTTP协议格式, 最简单的HTTP服务器)

    应用层 应用层 负责应用程序之间的数据沟通-----协议都是用户自己定的 自定制协议: 结构化数据传输 序列化: 将数据对象以指定的协议(数据格式)进行可用于持久化存储或者数据传输时的数据组织 例如在 ...

  10. 服务器开发系列(五)——服务器运维

    系列文章目录 服务器开发系列(一)--计算机硬件 服务器开发系列(二)--Jetson Xavier NX 服务器开发系列(三)--Linux与Windows操作系统基础功能对比 服务器开发系列(四) ...

最新文章

  1. linux struts2漏洞,重大漏洞预警:Struts 2 远程代码执行漏洞(s2-045\s2-046) (含PoC)
  2. Java小案例(二) 用数组实现增删查改排序
  3. android 用年月日初始化date_Android 系统自带api选择年月日 日历
  4. redis 获取所有的key_在微博微信场景下学习Redis数据结构
  5. 使用thead,tbody,tfoot来实现表格的分页打印
  6. sed shell 替换空格_shell三剑客之sed!
  7. Java的JDK以及maven环境变量配置
  8. python两数相加有进退位_Python 之父透露退位隐情,与核心开发团队产生隔阂
  9. Arthas java性能调优/接口优化
  10. 阿里玄难:面向不确定性的软件设计几点思考
  11. 智能电饭煲自动洗米手机操控一键搞定
  12. MFC与Windows编程
  13. 为什么要研究引起潜在大流行病的病原体?
  14. 向上沟通2-冰山理论
  15. 这个电脑用显微镜才能看清:却能让假货无处遁形
  16. 英特尔挖走苹果M1芯片工程师,或将改变x86架构
  17. Ubuntu关机和重启的命令
  18. uniapp 使用sqlite存储聊天记录篇
  19. 年轻人沉迷“酒店沉浸式度假”,景区该如何与酒店“争宠”?
  20. 网络通信中的加密解密及openssl和创建私有CA详解

热门文章

  1. java-循环变量定义问题
  2. [转]Linux 基本操作(RM 删除)
  3. 全新开始fighting
  4. .NET使用存储过程实现对数据库的增删改查
  5. Codeforces Round #358 (Div. 2) Alyona and Strings
  6. 数据表分区, 全新分区
  7. 转自《编程世界》一篇让我震憾的文章
  8. 如何进行影像建库及做ArcGIS Server Cache
  9. 孙鑫VC学习笔记:第十五讲 (三) 增加互斥条件实现线程同步
  10. centos7 docker安装_Docker安装运行并连接Centos7容器