如有非阻塞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时 , 对请求正文中的数据加以分析处理。

VPS云服务器GT线路,KVM虚vps消息CloudCone美国洛杉矶便宜年付VPS云服务器补货14美元/年

近日CloudCone发布了最新的补货消息,针对此前新年闪购年付便宜VPS云服务器计划方案进行了少量补货,KVM虚拟架构,美国洛杉矶CN2 GT线路,1Gbps带宽,最低3TB流量,仅需14美元/年,有需要国外便宜美国洛杉矶VPS云服务器的朋友可以尝试一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器...

RAKsmart推出7.59美元/月,云服务器产品Cloud Server,KVM架构1核1G内存40G硬盘1M带宽基础配置

近期RAKsmart上线云服务器Cloud Server产品,KVM架构1核1G内存40G硬盘1M带宽基础配置7.59美元/月!RAKsmart云服务器Cloud Server位于美国硅谷机房,下单可选DIY各项配置,VPC网络/经典网络,大陆优化/精品网线路,1-1000Mbps带宽,支持Linux或者Windows操作系统,提供Snap和Backup。RAKsmart机房是一家成立于2012年...

酷番云-618云上秒杀,香港1核2M 29/月,高防服务器20M 147/月 50M 450/月,续费同价!

官方网站:点击访问酷番云官网活动方案:优惠方案一(限时秒杀专场)有需要海外的可以看看,比较划算29月,建议年付划算,月付续费不同价,这个专区。国内节点可以看看,性能高IO为主, 比较少见。平常一般就100IO 左右。优惠方案二(高防专场)高防专区主要以高防为主,节点有宿迁,绍兴,成都,宁波等,节点挺多,都支持防火墙自助控制。续费同价以下专场。 优惠方案三(精选物理机)西南地区节点比较划算,赠送5...

http://www.taobao.com/为你推荐
2020双十一成绩单2020考研成绩出分后需要做什么?蓝色骨头手机宠物的骨头分别代表几级?阿丽克丝·布莱肯瑞吉行尸走肉第六季女演员李子柒年入1.6亿新晋网红李子柒是不是背后有团队是摆拍、炒作为的是人气、流量?www.kkk.com谁有免费的电影网站,越多越好?xyq.163.cbg.comhttp://xyq.cbg.163.com/cgi-bin/equipquery.py?act=buy_show_equip_info&equip_id=475364&server_id=625 有金鱼贵吗?www.kknnn.com求有颜色的网站!要免费的partnersonline国内有哪些知名的ACCA培训机构www.idanmu.com万通奇迹,www.wcm77.HK 是传销么?yinrentangWeichentang正品怎么样,谁知道?
美国免费虚拟主机 vps侦探 香港vps主机 骨干网 flashfxp怎么用 ion 免备案空间 info域名 国内加速器 元旦促销 微信收钱 建立邮箱 789电视网 新家坡 in域名 申请免费空间和域名 美国独立日 环聊 空间登入 上海电信测速网站 更多