



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5riinfeiyaiig08Page Page WEB服务器启动时加载一个ServerSocket服务如果在项目中需要让一个SeiverSocket服务伴随WEB服务器的启动而启动,时刻监控某个端II,接收Socket客户端发送过来的socket报文。需要做以卞配置,配置完成后程序支持随服务器启动,支持同时处理多个socket客户端请求。配置web.xinl在web.xinl的节点中添加以下内容:socke七卩0厂七3800Socket服务随web启动而启动serviceServerSocketListenecv/listener-class汩E:网上也有人提出可以使用sewlet节点进行配
2、置,具体如下:Test/servlet-nameservicetv/senvlet-class3这样做有一个很人的问题,就是服务器关闭时资源无法得到完全释放,端11可能仍然被占用编写监听器Listener中配置的类ServerSocketListener类需要实现ServletContextListenerpublicclassServerSocketListenerimpleaentsServletContextListenerprivateSocketThreadsocketThread;publicvoidcontextDestroyed(ServletContextEvente)if(
3、socketThread!=null&socketThread.islnterrupted()socketThreadcloseServerSocket();socketThreadinterrupt();publicvoidcontextlnitialized(ServletContextEvente)ServletContextServletContext=e.getServletContext();if(str=null&socketThread=null)socketThread=newSocketThread(nullservletContext);socketThreadstart
4、();/servlet上下文初始化时启动socket服务端线程*门定义一个Socket线程类继承门线程类,重写run()方法,用丁接收客户端socket请求报文*/classSocketThreadextendsThreadprivateServletContextservletContext;privateServersocketserversocket;publicSocketThread(ServerSocketserverSocketServletContextservletContext)this.servletContext=servletContext;/从web.xml中con
5、text-param节点获取socket端口Stringport=this.senvletContextgetlnitParameter(socketPort);if(serversocket=null)trythis.serverSocket=newServerSocket(Integer);catch(IOExceptione)epnintStackTrace();publicvoidrun()while(!this.islnterrupted()/线程未中断执行循环trySocketsocket=serversocketaccept();if(socket!=null)newProces
6、sSocketData(socket,this.servletContext).start();catch(IOExceptione)epnintStackTrace();publicvoidcloseServerSocket()if(serversocket!=null&!serversocketisClosed()serversocketclose();catch(IOExceptione)e.printStackTrace();Socket消息报文处理类classProcessSocketDataextendsThreadprivateSocketsocket;privateServle
7、tContextservletContext;publicProcessSocketData()super();publicProcessSocketData(Socketsocket,ServletContextservletContext)this.socket=socket;this.servletContext=servletContext;publicvoidrun()tryBufferedReaderbr=newBufferedReader(newInputStreamReader(socketgetlnputStream();Printwriterpw=newPrintwrite
8、r(socket.getOutputStream();Stringrequest=br.readLine();/从流中读取请求消息报文/执行自定义的请求解析方法,生成响应responsepw.printIn(response);pw.flush();/刷新缓冲区catch(IOExceptione)e.printStackTrace();个简单的Socket客户端,用于验证以上程序publicclassTestclientpublicvoidcreateSocketClient(Stninghost,intport)Socketsocket=null;PrintWriterpw=null;BufferedReaderbr=null;tryStringrequest=M20110624u;socket=newSocket(host,port);pw=newPrintWriter(newOutputStreamV/riter(socket.getOutputStream();pw.println(requesti);pv/.flush();br=newBufferedReader(newInputStreamReader(socketgetlnputStream();System.outpnintln(brreadLine();c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 转让农村别墅合同范本
- 粉末冶金采购合同范本
- 食堂做饭阿姨协议合同
- 转让出租养殖合同范本
- 酒店改造住房合同范本
- 绿植租摆合同变更协议
- 测试咨询付款合同范本
- 自动灭火维保合同范本
- 研究生协议班合同范本
- 维达纸业销售合同范本
- 应用PDCA降低抗生素的使用率及使用强度
- 2025年上海市闵行区区管国企招聘笔试参考题库含答案解析
- 海绵城市施工方案
- T-SAASS 164-2024 盐碱地蛇床绿色轻简化种植技术规程
- 二级WPS Office高级应用与设计计算机等级考试试题及答案指导(2025年)
- 智能计算系统:从深度学习到大模型 第2版课件 第四章-编程框架使用
- 供应链管理师二级练习卷含答案
- 《公路边坡网锚喷植被混凝土生态防护技术指南》
- 主要负责人安全生产责任制模版(三篇)
- 工程项目现场管理制度(业主方用)
- 2023部编新人教版五年级(上册)道德与法治全册教案
评论
0/150
提交评论