如有非阻塞HTTP

http://www.taobao.com/  时间:2021-03-06  阅读:()

实验报告

( 实验二: 非阻塞HTTP服务器 )课程名称: 网络课程设计II

姓 名:

学 院:

专 业:

年 级: 大三年级

学 号:

指导教师:

职 称:

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

年 11月 15 日

一、 实验目的和要求

理解进程和线程的概念;

1.掌握使用j av a.n i o包中的类创立非阻塞模式的服务器的方法,并能给出实现代码;

2.掌握HTTP协议的处理原理和代码实现过程。

二、实验内容

1. 分析说明 :

( 1 )分析课本5. 2节创立的非阻塞的HTTP服务器中主要包含了哪些主要的类?这些类的功能是什么?

1 .HttpServer :服务器主程序, 负责启动服务器;

2.AcceptHandler : 负责接收客户端连接;

3.ReuqestHandler : 负责接收客户端的HTTP请求,解析,生成HTTP响应, 再返回给客户端;

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

4.Request :抽象化HTTP请求;

5.Response :抽象化HTTP响应;

6.Content :表示HTTP响应的正文;

( 2 )分析课本例5-2 , 并逐行进行注释, 说明其意义。public class HttpServer {private Selector selector = null ; //声明一个Selector成员变量private ServerSocketChannel serverSocketChannel = null;//声明一个ServerSocketChannel成员变量private int port = 8062; //设置端口号为8062private Charset charset = Charset.forName("UTF-8") ; //设置字符集为UT F-8public HttpServer() throws IOException{ //HttpServer类唯一构造器selector = Selector.open() ;//注册一个selector对象serverSocketChannel = ServerSocketChannel.open() ;//

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

创立一个serverSocketChannel对象serverSocketChannel. socket() . setReuseAddress(true) ;//设置为能够顺利在重启后绑定端口serverSocketChannel. configureBlocking(false) ;//设置为非阻塞模式serverSocketChannel. socket() .bind(new

InetSocketAddress(port)) ;//把服务器与一个本地端口进行绑定

System.out.println("server is running!") ;

}public void service() throws IOException{

//注册连接就绪事件serverSocketChannel.register(selector,

SelectionKey.OP_ACCEPT,new AcceptHandler() ) ;

//死循环保持监听for(; ;) {int n= selector. select() ;//取得监听到的事件的数量

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。if(n==0) continue; //若无事件发生,则进入下一次循环

Set readyKeys = selector. selectedKeys() ; //将事件存入Set集合中

Iterator it = readyKeys. iterator() ; //获取Set集合的迭代器while(it.hasNext()) {

SelectionKey key = null ;try{key = (SelectionKey) it.next() ; //使用迭代器将事件存入句柄对象it.remove() ; //将取出的对象从集合中移除final Handler handler = (Handler)key.attachment() ; //将与key关联的附件传给handlerhandl er.handle(key) ; //在Handler中处理事件

}catch(IOException e) {//若捕获IO异常做如下

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

处理e.printStackTrace() ;//打印异常信息try{if(key!=null) {//判断key是否为空key.cancel() ;//使这个key失效//使得Selector不在监控这个SelectionKey感兴趣的事件key. channel() .close() ;

}

}catch(Exception ex) {//若捕获异常ex.printStackTrace() ;//打印异常信息}

}

}

}

}

}

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

2. 实例操作:

对课本5. 2节中的代码进行扩展,完成课本5. 3节中扩展方法

( 1 ) ~ ( 4 ) 。

解答:

(1).首先再Request的属性中加入参数这一项:

经过对URI字符串的多次分割处理, 将键值对存入参数中

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

结果:

(2).由于我们已经将参数这一项以HashMap对象的形式加入到了Request类中, 获取函数getParameter()实现如下:

(3)创立一个Servlet接口 , service方法负责生成动态网页。

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

(4)要支持POST方法,就要能获得请求正文中的数据, 因此要首先重新编写Reuquest 中删除请求正文的方法,在action =Request.Action.POST时 , 对请求正文中的数据加以分析处理。

2021年7月最新洛杉矶CN2/香港CN2 vps套餐及搬瓦工优惠码 循环终身优惠6.58%

搬瓦工怎么样?2021年7月最新vps套餐推荐及搬瓦工优惠码整理,搬瓦工优惠码可以在购买的时候获取一些优惠,一般来说力度都在 6% 左右。本文整理一下 2021 年 7 月最新的搬瓦工优惠码,目前折扣力度最大是 6.58%,并且是循环折扣,续费有效,可以一直享受优惠价格续费的。搬瓦工优惠码基本上可能每年才会更新一次,大家可以收藏本文,会保持搬瓦工最新优惠码更新的。点击进入:搬瓦工最新官方网站搬瓦工...

极光KVM(限时16元),洛杉矶三网CN2,cera机房,香港cn2

极光KVM创立于2018年,主要经营美国洛杉矶CN2机房、CeRaNetworks机房、中国香港CeraNetworks机房、香港CMI机房等产品。其中,洛杉矶提供CN2 GIA、CN2 GT以及常规BGP直连线路接入。从名字也可以看到,VPS产品全部是基于KVM架构的。极光KVM也有明确的更换IP政策,下单时选择“IP保险计划”多支付10块钱,可以在服务周期内免费更换一次IP,当然也可以不选择,...

妮妮云,美国cera CN2线路,VPS享3折优惠

近期联通CUVIP的线路(AS4837线路)非常火热,妮妮云也推出了这类线路的套餐以及优惠,目前到国内优质线路排行大致如下:电信CN2 GIA>联通AS9929>联通AS4837>电信CN2 GT>普通线路,AS4837线路比起前两的优势就是带宽比较大,相对便宜一些,所以大家才能看到这个线路的带宽都非常高。妮妮云互联目前云服务器开放抽奖活动,每天开通前10台享3折优惠,另外...

http://www.taobao.com/为你推荐
嘉兴商标注册如何注册商标怎样商标注册原代码源代码是什么陈嘉垣大家觉得陈嘉桓漂亮还是钟嘉欣漂亮?8090lu.com8090lu.com怎么样了?工程有进展吗?www.55125.cn如何登录www.jbjy.cnwww.585ccc.com手机ccc认证查询,求网址www.789.com.cn有什么网站可以玩游戏的.haole012.com012.com网站真的可以挂Q升级吗?b.faloo.com坏蛋是这样炼成的2出的最快的网站是那个?干支论坛天干地支???
域名注册使用godaddy 香港vps主机 最新代理服务器ip flashfxp怎么用 t牌 外国空间 全能主机 北京主机 最好看的qq空间 合肥鹏博士 isp服务商 umax120 metalink 服务器硬件防火墙 网站在线扫描 彩虹云 腾讯总部在哪 河南移动梦网 上海电信测速 什么是web服务器 更多