tinyhttpd是学习http协议非常好的工具,但是由于其过于简单,不支持在网页上显示图片,所以我改了一些代码,让tinyhttpd可以现实图像,供新手一起学习和熟悉http协议,ubuntu14.04下直接make就可以,已经测试通过.

代码: download.csdn.net/detail/qiankun1993/9524289

主要增加两个函数,第一个是图像封装头的函数,传输图片时要将html的头中的Content-Type设置为image/png:

void headers2(int client, const char *filename)
{
char buf[1024];
(void)filename; /* could use filename to determine file type */ strcpy(buf, "HTTP/1.0 200 OK\r\n");
send(client, buf, strlen(buf), 0);
strcpy(buf, SERVER_STRING);
send(client, buf, strlen(buf), 0);
sprintf(buf, "Content-Type: image/png\r\n");
send(client, buf, strlen(buf), 0);
strcpy(buf, "\r\n");
send(client, buf, strlen(buf), 0);
}

第二个是读取本地图片文件的函数,使用下面的cat2()来读取图像文件的数据:

void cat2(int client, FILE *resource)
{
char buf[1024];
char c;
while ((fscanf(resource,"%c",&c))!=EOF)
{
send(client, &c, 1, 0);
printf("%c",c);
}
printf("%c",c);
}

然后就可以在网页上显示图像了,这个仅供新手学习,大牛们不要鄙视我.

升级tinyhttpd-0.1.0,让其支持网页显示图像的更多相关文章

  1. DPA 9.1.85 升级到DPA 10.0.352流程

    SolarWinds DPA的升级其实是一件非常简单的事情,这里介绍一下从DPA 9.1.95升级到 DPA 10.0.352版本的流程.为什么要升级呢? DPA给用户发的邮件已经写的非常清楚了(如下 ...

  2. linux内核升级(ubuntu12.04从3.13.0升级到3.4.0 )

    花了一天的时间,终于把ubuntu12.04 的linux内核版本从3.13.0升级到3.4.0 升级后,系统更加稳定.具体步骤:# wget http://www.kernel.org/pub/li ...

  3. 【Android Studio安装部署系列】三十、从Android studio2.2.2升级到Android studio3.0之路

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android Studio 3.0的新功能 https://mp.weixin.qq.com/s/2XmVG4mKEDX6-bvZ ...

  4. maven私库nexus2.11.4迁移升级到nexus3.12.0

    nexus简介 nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问. nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据 .n ...

  5. CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)

    机房一台centos6.9机器部署了jenkins发布系统,开发人员在用node编译js,发现依赖的gcc版本低了,故需要将gcc升级到高版本(至少5.0版本以上),这里选择升级到6.4.0版本,下面 ...

  6. ubuntu 13.04 编译 安装 升级 gcc 4.9.0 address sanitizer

    @ 前记: 最近查一个线上项目的crash,review代码无果,crash几率低,不可在本地环境重现.之后在线上好几个服务器跑valgrind就不crash了.个人猜测可能是跑valgrind后性能 ...

  7. Kafka实践、升级和新版本(0.10)特性预研

    本文来自于网易云社区 一.消息总线MQ和Kafka (挡在请求的第一线) 1. 几个应用场景 case a:上游系统往下游系统推送消息,而不关心处理结果: case b:一份新数据生成,需要实时保存到 ...

  8. WinForms项目升级.Net Core 3.0之后,没有WinForm设计器?

    目录 .NET Conf 2019 Window Forms 设计器 .NET Conf 2019 2019 9.23-9.25召开了 .NET Conf 2019 大会,大会宣布了 .Net Cor ...

  9. oracle--10.2.0.3升级到11.2.0.4

    一,环境 01,待升级的系统 升级仅支持10.2.0.2版本之后的系统,如果不是,请把10G升级至高版本! 本次实验环境10.2.0.3 02,挂载11G系统 03,升级须知 1) 做好备份 二,DB ...

随机推荐

  1. java8在Stream的forEach操作时获取index

      import java.util.Objects; import java.util.function.BiConsumer; /** * * @author yangzhilong * @dat ...

  2. 如何设置github的ssh key

    目录 Generate SSH key in putty add key to github git setting How to add SSH key to github Generate SSH ...

  3. 行车记录仪 MyCar Recorder (转)

    行车记录仪 MyCar Recorder

  4. anaconda 安装指定源的包

    当前知道的有两种方式可以查找: 1.conda search 命令:conda search pkg_name 安装的时候直接:conda install cudatoolkit=版本后 conda ...

  5. 【错误解决】UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 840: illegal multibyte sequence

    原文来源:https://www.zhihu.com/question/22699590 编码问题错误,读入文件的时候指定编码即可. with open(fname, encoding='utf-8' ...

  6. [整理]如何撤销远程的git提交?

    确保你在你想要撤销的分支上. 第一步,本地使用 get reset --hard ,切换到特定的commit. 第二部,使用 --force推送到远程分支. git reset --hard cedc ...

  7. jw python 培训帮助 手册

    #########sample 1  (如果python 遇到有问题,就求助于 help 命令,python 是 个人开发的胶水语言,因此不具备 java,c++的类的继承关系) Python hel ...

  8. docker 启动mysql 闪退 无法启动问题

    docker 安装mysql [获取容器] docker pull mysql:5.6 [启动容器] docker run -p 3306:3306 --name mymysql -v $PWD/co ...

  9. react一些问题

    一.死循环 1.问题描述 function handleClick() { this.setState({count: ++this.state.count}); console.log(" ...

  10. Intellij IDEA 启动出现“前言中不允许有内容”

    修改错误方法,在IDEA的workspace中找到 .idea 目录下的workspace.xml文件删除即可.