下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年生活科学知识竞赛试卷
- 2026事业单位笔试-江苏-江苏卫生公共基础(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-新疆-新疆中西医结合骨科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-广东-广东眼科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-山西-山西妇幼保健学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-山东-山东中医儿科学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-天津-天津中医骨伤科学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-吉林-吉林药事管理(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-北京-北京传染病学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-云南-云南耳鼻喉科(医疗招聘)历年参考题库含答案详解
- 成都市青羊区新华少城社区卫生服务中心康复医师招聘笔试备考试题及答案详解
- 民宿管理2026年委托协议范本
- 2026年污染源自动监测考核试题题库及答案
- 儿童过敏性鼻炎课件
- 肠外营养护理课件
- 贵州措施计价管理办法
- 水闸运行管理课件
- 2023版押品考试题库含答案
- 高压配电设备安全操作规范
- 水利建设管理
- 220KV变电站电气设计(220KV变电站电气施工组织设计)完整版
评论
0/150
提交评论