下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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)《GBT 3298-2022日用陶瓷器抗热震性测定方法》宣贯培训
- 《JBT 10746-2016YEZ系列建筑起重机械用锥形转子制动三相异步电动机 技术条件》专题研究报告
- 2026年初中七年级上册期末押题预测卷含答案
- 2026高一地理下册第一单元第一次月考含答案及解析
- 《JBT 10489-2019隧道用射流风机》专题研究报告
- 2026年新媒体内容创作与运营能力测试题
- 2026年省级巡视整改建章立制知识测试
- 2026年绩效考核在口腔门诊的重要性
- 钢管架工程合同履行条件合同协议合同三篇
- 2026年传统文化节日习俗及文化内涵解析
- 火力发电厂机组A级检修监理大纲
- 小狐狸买手套
- 气流组织课件
- 电离辐射危害及预防方法
- 系统解剖学课件:内脏神经
- GB/T 15587-2023能源管理体系分阶段实施指南
- 职业技能竞赛钢结构工程质量检测决赛钢结构焊缝质量检测理论题库多选题
- 数据库原理及应用-课件
- GB/T 1981.2-2009电气绝缘用漆第2部分:试验方法
- GB/T 19208-2008硫化橡胶粉
- 《内部控制》第四章-风险评估课件
评论
0/150
提交评论