下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国盛证券2026年度校园招聘备考题库及答案详解一套
- 2026年福建省农业科学院植物保护研究所公开招聘科研助理的备考题库有答案详解
- 2026年贵阳市观山湖区第七中学秋招临聘教师备考题库及参考答案详解
- 六盘水市青少年活动中心2026年第一批公开招聘外聘教师备考题库(含答案详解)
- 初中生艺术展览活动策划与实施对学生创新思维的影响教学研究课题报告
- 2026年备考题库技术中心招聘备考题库及答案详解(夺冠系列)
- 宁德人民医院2025年编外人员招聘备考题库(七)及参考答案详解一套
- 天津市卫生健康委员会所属天津医学高等专科学校2026年度公开招聘11人备考题库完整参考答案详解
- 江铜宏源铜业有限公司2026年度第二批次社会招聘备考题库及参考答案详解一套
- 中小学STEM教育数字资源整合与教师培训体系构建研究教学研究课题报告
- 清华大学《工程伦理》网课习题及期末考试答案
- 个人借款合同个人借款协议
- 生物科技股份有限公司GMP质量手册(完整版)资料
- 2023年运动康复期末复习-体适能理论与训练(运动康复专业)考试上岸题库历年考点含答案
- 中国纪录片发展历程
- 2023年德语专业四级考试真题
- 班组工程进度款申请表
- 四年级阅读训练概括文章主要内容(完美)
- JJG 1033-2007电磁流量计
- GB/T 6541-1986石油产品油对水界面张力测定法(圆环法)
- GB/T 2895-2008塑料聚酯树脂部分酸值和总酸值的测定
评论
0/150
提交评论