WEB服务器启动时加载一个ServerSocket服务_第1页
WEB服务器启动时加载一个ServerSocket服务_第2页
WEB服务器启动时加载一个ServerSocket服务_第3页
WEB服务器启动时加载一个ServerSocket服务_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论