自己手动写http服务器(2)

 1 tringBuilder response =new StringBuilder();
 2             //1)  HTTP协议版本、状态代码、描述
 3             response.append("HTTP/1.1").append(BLANK).append("200").append(BLANK).append("OK").append(CRLF);
 4             //2)  响应头(Response Head)
 5             response.append("Server:bjsxt Server/0.0.1").append(CRLF);
 6             response.append("Date:").append(new Date()).append(CRLF);
 7             response.append("Content-type:text/html;charset=GBK").append(CRLF);
 8             //正文长度 :字节长度
 9             response.append("Content-Length:").append(responseContext.toString().getBytes().length).append(CRLF);
10             //3)正文之前
11             response.append(CRLF);
12             //4)正文
13             response.append(responseContext);
14
15             System.out.println(responseContext);
16             

先上代码,和结果。执行程序,浏览器中输入localhost:8088

控制台的结果是

GET / HTTP/1.1
Host: localhost:8088
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8

HTTP/1.1 200 OK
Server: tomcat
DateSun Nov 09 20:42:08 CST 2014
Content-type:text/html;charset=GBK
Content-Length:89

<html><head><titilt>你怎么舍得我难过</title>大姑娘美,大姑娘浪</head><body></body></html>

  

时间: 2024-10-28 15:53:44

自己手动写http服务器(2)的相关文章

基于go手动写个转发代理服务

由于公司经常需要异地办公,在调试的时候需要用到内网环境,因此手动写了个代理转发服务器給兄弟们用:socks5proxy. 选型上,语言上就选择了Go,简单清晰,转发协议选择了socks5. SOCKS5协议介绍 SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递,SOCKS是"SOCKetS"的缩写. SOCKS5是SOCKS4的升级版,其主要多了鉴定.IPv6.UDP支持. SOCKS5协议可以分为三个部分: (1) 协议版本及认证方式 (2) 根据认证方式执

原来热加载如此简单,手动写一个 Java 热加载吧

1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境. 2. 热加载与热部署的区别 首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的. 那么两者到底有什么区别呢? 在部署方式上: 热部署是在服务器运行时重新部署项目. 热加载是在运行时重新加载 class. 在实现原理上: 热部署是直接重新

从头写rtsp服务器-RTSP协议的解析

rtps demo(linux是64位的,windows32位的):rtsp_demo.rar 1.首先服务器收到客户端连接请求,生产 一个RtspClientConnection对象,RtspClientConnection定义详见  从头写rtsp服务器-模块的划分 int rtsp::v_accept(netconnection * n) { netoperation::v_accept(n); printf("client accept\n\n\n"); RtspClientC

仿hibernate,spring框架手动写

最近学习了hibernate底层技术和spring 的底层技术,觉得很不错,所以想分享下,要是说的不够详细,可以去下载资源自己查看下载链接 技术的体现是在实际中的.现在大体介绍一下吧 首先介绍hibernate手动写: 仿HIBERNATE hibernate是属于DAO,专门又来管理数据的,connection中还要考虑多线程的情况,同一个线程还要必须要是相同的connection对象,这就需要ThreadLocal来实 现. 1,connection考虑需要多线程,需要采用多例模式来实现,

Tornado写简易服务器

我们都知道在Web开发中,都需要服务器,比如Java Web开发的Tomcat,WebLogic,WebSphere,现在来看利 用Tornado Web Server框架如何写一个简易的Python服务器. 一般来说只需要实现get和post方法就可以了.以上次使用redis数据库的例子说明,数据库插入代码如下: import redis import datetime class Database: def __init__(self): self.host = 'localhost' se

腾讯高级工程师:如何从头开始写游戏服务器框架_转

转自: 腾讯高级工程师:如何从头开始写游戏服务器框架 本文作者:韩伟,腾讯互娱高级工程师,目前在 Next 产品中心研发创新类型游戏. 前言:从去年开始作者投入了一些具体游戏项目的开发,这些新的游戏项目,比较接近独立游戏的开发方式.在这个过程中,作者从头写了一个游戏服务器端的框架,以便获得更好的开发效率和灵活性.因此这篇文章便是该项目服务器框架的设计和实现过程的总结. PS:框架的基本运行环境是 Linux ,采用 C++ 编写.为了能在各种环境上运行和使用,采用了 gcc4.8 这个“古老”的

自己动手写RTP服务器——关于RTP协议

转自:http://blog.csdn.net/baby313/article/details/7353605 本文会带领着你一步步动手实现一个简单的RTP传输服务器,旨在了解RTP流媒体传输协议以及一些关于多媒体编解码的知识. 关于RTP协议的必备知识 要动手实现一个协议,当然首先需要阅读该协议的文档.RTP协议的文档,有rfc1889.rfc1890.rfc3550,其中rfc3550是现在的版本,另外两个是过期版.这个协议可以在ietf的官网找到:http://tools.ietf.org

自己动手写RTP服务器——用RTP协议传输TS流

上一篇文章我们介绍了关于RTP协议的知识,那么我们现在就自己写一个简单的传输TS流媒体的RTP服务器吧. 预备知识 关于TS流的格式:TS流封装的具体格式请参考文档ISO/IEC 13818-1.这里我们只需要了解一些简单的信息就好.首先TS流是有许多的TS Packet组成的,每个TS Packet的长度固定为188 bytes,每个packet都是以sync_byte:0x47开头. MTU(Maximum Transmission Unit): 最大传输单元.是指一种通信协议的某一层上面所

从头写rtsp服务器-模块的划分

1. 网络库模块,这个模块主要作用是网络消息通知,还有一个定时器事件,至于网络库怎么写,不会的可以去学习一下网络编程,然后提取出相似的接口. 接口定义如下: 1 class rtsp:public netoperation,netnocopyable 2 { 3 public: 4 rtsp(){} 5 rtsp(netaddress & server); 6 7 virtual int v_connect(netconnection * n); 8 virtual int v_close(ne