从零实现一个跨平台的静态网页服务器

大三要结束了,想写点东西,一是为了积累些技术,二是为了下学期实习做做准备,不然简历上的项目经验真没什么好写的。

c/c++的底层是操作系统和各种协议以及内存布局,java的底层是jvm。不想写一般的应用程序,那就从0实现一个跨平台的静态网页服务器吧。

封装跨平台的各个类:有Tcp和Udp的套接字类,Http包的解析和生成类还有一个读取Html文件的类

运行结果还算不错,Windows平台下

服务器启动

处理浏览器请求

浏览器显示

当我们请求一个不存在的网页时

Linux平台下运行结果

浏览器显示

因为只是测试是否可用,所以Html文件比较简单,你也可以把其他的Html文件放入项目工程root文件夹内。

感兴趣的可以去下源代码

源代码链接:http://download.csdn.net/detail/kyt511/8864901

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 22:38:45

从零实现一个跨平台的静态网页服务器的相关文章

【杂谈】一个简易的静态网页服务器

前言 上一篇随笔[杂谈]一个回车下去,浏览器做了什么?讲了浏览器的处理,这里再用一个例子讲解一下,也不算讲解,算是梳理一下服务端处理浏览器请求的过程.当然实际过程要比这复杂多了.下文的例子,其实就是<How Tomcat Works>这本书的第一个例子,感兴趣的可以去看这本书.不过书上的例子有问题,我下文中会提到. 注:此项目不需要用tomcat,纯Java底层代码写就可以了. 概述 程序有三个类HttpServer,Request,Response. HttpServer  => 负责

一个做页面静态化的php类

<?phpnamespace Common;/* * * 功能:页面静态化的创建和删除 * 创建:当且仅当,一个页面需要被静态化并且还未静态化时. * 删除:当且仅当,一个页面存在静态化页面并且需要被重新静态化时. * * 作者:郭军周 * * 注 :本类基于ThinkPHP3.2,或者其他具有"单一入口且MVC模式"的其他php框架. * * 使用方式:在Controller的构造方法中获取其对象:在Controller的销毁方法里,用其对象的_static方法. * 例:XX

acl 是一个跨平台的网络通信库及服务器编程框架

acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库.通过该库,用户可以非常容易地编写支持多种模式(多线程.多进程.非阻塞.触发器.UDP方式.协程方式)的服务器程序,WEB 应用程序,数据库应用程序.此外,该库还提供了常见应用的客户端通信库(如:HTTP.SMTP.ICMP.redis.memcache.beanstalk.handler socket),常见流式编解码库:XML/JSON/MI

十分钟使用ionic Framework开发一个跨平台移动应用

Ionic是一个前端的框架,帮助开发者使用HTML5, CSS3和JavaScript做出原生应用.ionic的理念类似前端开发的BootStrap,目标是封装HTML5移动跨平台开发的最佳实践,就像Twitter Bootstrap在前端开发中做的一样.Ionic框架目前发展很迅速,我们从2014年3月开始使用,当时是1.0.0beta2,现在已经更新到1.0.0beta10,大概每2个星期会出一个beta版本,并且都包含实质性更新.Ionic框架很先进,js部分是基于AngularJS框架,

开源一个跨平台运行的服务插件 - TaskCore.MainForm

本次将要很大家分享的是一个跨平台运行的服务插件 - TaskCore.MainForm,此框架是使用.netcore来写的,现在netcore已经支持很多系统平台运行了,所以将以前的Task.MainForm改良成跨平台的服务共大家使用和相互交流:本来这篇应该分享的是nginx+iis+redis+Task.MainForm构建分布式架构后续文章,但使用.netcore来定义一个服务插件和跨平台测试经过让我既兴奋又头痛,不说了下次再分享分布式后续文章吧:那么开始今天的分享内容,希望各位多多支持:

拥抱.NET Core,如何开发一个跨平台类库 (1)

在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解"拥抱.NET Core,学习.NET Core的基础知识补遗",以便接下来的阅读. 在本文将介绍如何配置类库项目支持不同的平台,并为不同的平台进行兼容的编码. 创建一个.NET Core类库 首先我们创建一个.NET Core的类库项目. 结构如下 设置项目支持的平台 我们打开"project.json"文件,会看到如下内容: 其中"framework"就是用来

[再寄小读者之数学篇](2014-07-16 任意阶导数在零处为零的一个充分条件)

设 $f(x)$ 在 $\bbR$ 上任意阶可导, 且 $$\bex \forall\ n\in\bbZ^+,\ f\sex{\frac{1}{n}}=0. \eex$$ 试证: $f^{(n)}(0)=0$. 提示:  由 Rolle 定理, $$\bex \forall\ k\in\bbZ^+,\quad \exists\ \xi_n\searrow 0,\st f^{(k)}(x_n)=0. \eex$$ [再寄小读者之数学篇](2014-07-16 任意阶导数在零处为零的一个充分条件)

从零实现一个http服务器

我始终觉得,天生的出身很重要,但后天的努力更加重要,所以如今的很多"科班"往往不如后天努力的"非科班".所以,我们需要重新给"专业"和"专家"下一个定义:所谓专业,就是别人搞你不搞,这就是你的"专业":你和别人同时搞,你比别人搞的好,就是"专家". 说到http协议和http请求,很多人都知道,但是他们真的"知道"吗?我面试过很多求职者,一说到http协议,他们能滔滔

使用Apache搭建一个个人的静态网址,网址里面的内容是:i like linux

使用Apache搭建一个个人的静态网址,网址里面的内容是:i like linux以下为主要内容:1.重启服务 网址内容写入 2.测试结果 3.修改配置文件 4.赋予权限5.测试结果 原文地址:http://blog.51cto.com/13963299/2173372