java项目类似篮球比赛活动策划的比赛投屏要使用socket

1、新建web工程
2、自定义类 实现ServletContextListener 接口
在contextInitialized方法中启动socket服务的线程
在contextDestroyed方法中关闭socket线程的服务,释放监听端口
3、更改web.xml
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_IDsocket Server&/display-name&
&context-param&
&param-name&socketPort&/param-name&
&param-value&8888&/param-value&
&/context-param&
&listener&
&description&Socket&/description&
&listener-class&myserver.ServerSocketListener&/listener-class&
&/listener&
&welcome-file-list&
&welcome-file&index.html&/welcome-file&
&welcome-file&index.htm&/welcome-file&
&welcome-file&index.jsp&/welcome-file&
&welcome-file&default.html&/welcome-file&
&welcome-file&default.htm&/welcome-file&
&welcome-file&default.jsp&/welcome-file&
&/welcome-file-list&
&/web-app&
4、tomcat发布服务即可
注:需进入servlet-api.jar包
附示例代码
public class ServerSocketListener implements ServletContextListener
private SocketThread socketT
public void contextDestroyed(ServletContextEvent e)
if (socketThread != null && socketThread.isInterrupted())
socketThread.closeServerSocket();
socketThread.interrupt();
public void contextInitialized(ServletContextEvent e)
ServletContext servletContext = e.getServletContext();
System.out.println("Server contextInitialized over");
if (socketThread == null)
socketThread = new SocketThread(null, servletContext);
socketThread.start();
class SocketThread extends Thread
Integer count = 0;
private ServletContext servletC
private ServerSocket serverS
public SocketThread(ServerSocket serverSocket, ServletContext servletContext)
this.servletContext = servletC
// 从web.xml中context-param节点获取socket端口
String port = this.servletContext.getInitParameter("socketPort");
if (serverSocket == null)
this.serverSocket = new ServerSocket(Integer.parseInt(port));
catch (IOException e)
e.printStackTrace();
public void run()
Integer count = 0;
while (!this.isInterrupted())
MyServer.rerfresh();
Socket socket = serverSocket.accept();
System.out.println("Server SocketThread start:"+count);
if (socket != null)
SocketClientBean client = new SocketClientBean();
client.setSocket(socket);
MyServer.clientlist.add(client);
System.out.println("new commer:"+socket.getRemoteSocketAddress().toString());
MyServer.invoke(socket);
catch (Exception ex)
System.out.println("SocketThread err:"+ex.getMessage());
public void closeServerSocket()
if (serverSocket != null && !serverSocket.isClosed())
serverSocket.close();
MyServer.destroyedTimer();
catch (Exception ex)
System.out.println("SocketThread err:"+ex.getMessage());
public class MyServer
public static List&SocketClientBean& clientlist = new ArrayList&SocketClientBean&();private static Timer timer = new Timer();
public static void rerfresh()
timer.schedule(new MyClientRefreshTask(), 00*15);
public static void destroyedTimer()
if(timer1!=null)
timer1.cancel();
if(timer!=null)
timer.cancel();
public static void invoke(final Socket client) throws IOException
new Thread(new Runnable()
public void run()
String errcmd = "{\"cmd\":-1}";
String nocmd = "{\"cmd\":0}";
BufferedReader in = null;
PrintWriter out = null;
in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
out = new PrintWriter(client.getOutputStream());
Integer count = 0;
while (true)
String cmdmsg = in.readLine();
System.out.println(count);
System.out.println("Server received " + cmdmsg);
JSONObject jsmsg = JSONObject.fromObject(cmdmsg);
System.out.println("JSONObject success");
String cmd = jsmsg.getString("cmd");
switch (cmd)
com.progress.cmd1.process(client, jsmsg);
com.progress.cmd2.process(client, jsmsg);
break;default:
out.println(nocmd);
out.flush();
if (cmdmsg.equals("bye"))
catch (JSONException ex)
System.out.println("JSONObject err");
out.println(errcmd);
out.flush();
catch (Exception ex)
ex.printStackTrace();
in.close();
catch (Exception e)
out.close();
catch (Exception e)
client.close();
catch (Exception e)
}).start();
static class MyClientRefreshTask extends java.util.TimerTask
public void run()
refreshClient();
private static void refreshClient()
List&SocketClientBean& dels = new ArrayList&SocketClientBean&();
for (int i = 0; i & MyServer.clientlist.size(); i++)
if (MyServer.clientlist.get(i).getSocket().isClosed())
System.out.println("it is the del client!");
dels.add(clientlist.get(i));
System.out.println("clientlist num:"+clientlist.size());
System.out.println("dels num:"+dels.size());
clientlist.removeAll(dels);
System.out.println("clientlist left num:"+clientlist.size());
阅读(...) 评论()5527人阅读
java(10)
web.xml中配置监听
生产socket线程类:
处理客户端发送报文的类
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:93461次
积分:1280
积分:1280
排名:千里之外
原创:26篇
转载:24篇
(5)(2)(1)(4)(1)(1)(2)(5)(1)(1)(3)(2)(2)(4)(3)(2)(1)(2)(1)(8)基于Java的高性能基金持仓分析服务器开发(Java多线程\SOCKET编程\JAVA高并发)_新新贷_中国顶尖基金投资平台
基于Java的高性能基金持仓分析服务器开发(Java多线程\SOCKET编程\JAVA高并发)
&&&&&&&课程内容安排:&&&&&&&第一讲:高性能基金持仓分析服务器项目背景、业务知识、系统架构:&&&&&&&讲述本项目的系统架构,基金持仓分析的相关业务知识,通过本讲学习,学员可以了解项目的背景和基础知识,并熟悉系统的技术架构,为后续学习打下良好基础)&&&&&&&第二讲:开发环境搭建(系统基础开发环境由eclipse+xampp+jdk构成):&&&&&&&本讲讲解如何用eclipse和xampp、jdk搭建系统的开发环境,并引入项目使用的第三方包,介绍SQLyogEnt及xampp的使用。通过本讲学习,学员应能学会如何从无到有搭建系统的开发环境)&&&&&&&第三讲:项目编译系统构建,ant脚本编写(项目的编译系统采用ant来实现):&&&&&&&本讲讲述如何采用ant来构建项目编译系统,如何编写ant脚本,如何划分项目目录;讲解内容具有通用性,可直接使用于其它项目。通过本讲学习,学员应能学会ant的配置使用,ant脚本的基本语法,应会独立编写一个项目的ant脚本,具有构建一个项目的编译系统的能力。&&&&&&&第四讲:数据库设计(mysql数据库表结构设计):&&&&&&&本讲讲解系统的数据库总体设计思路,以及系统的表结构详细设计,通过本讲学习,学员应熟悉系统的数据库表设计的思路,熟悉表之间的关联关系,熟悉各张表的字段含义,并学会如何生成mysql数据表。&&&&&&&第五讲:数据库连接池封装1(采用dbcp实现,log4j记日志):&&&&&&&dbcp及log4j都是java开发中使用非常广泛的开源组件,本讲讲述如何基于dbcp编写一个独立的mysql数据库连接池组件,通过数据库连接池的使用提高数据库访问效率,提升系统的整体性能。该组件具有相对独立性,可直接用于其它项目中。&&&&&&&第六讲:数据库连接池封装2:&&&&&&&本讲继续讲解如何编写配置文件与代码分离的数据库连接池,同时介绍如何使用log4j记录日志。学员应跟随老师一步步编写代码,应学会开发数据库连接池的技巧,学会采用log4j记录系统日志的方法,学会log4j配置文件的配置方法&&&&&&&第七讲:数据访问层封装1(DAO模式封装):&&&&&&&本讲讲述系统分层原理,代码包依赖关系,并基于分层划分讲解DAO、MODEL、VO代码编写,DAO层与数据库连接池的调用关系&&&&&&&第八讲:数据访问层封装2:&&&&&&&本讲继续讲解DAO层代码编写,通过本讲学习,学员应能理解并熟悉DAO层的作用及代码模式,应能学会在以后的工作中熟练使用DAO进行数据库访问的封装。&&&&&&&第九讲:数据访问层封装3(批量增加和查询) :&&&&&&&本讲介绍如何采用批处理方式提交数据,以提高系统的数据处理效率;并演示在DAO层中数据查询的代码编写模式。&&&&&&&第十讲:基金持仓明细功能开发1(service层封装及console主程序编写)&&&&&&&:本讲介绍业务逻辑层(service层)在系统中的位置,并讲解如何封装service层,讲解如何开发管理console主程序。通过本讲学习,学员应理解service层的作用及与DAO层的调用关系,应学会service封装业务逻辑的方法&&&&&&&第十一讲:基金持仓明细功能开发2(jdk集成及系统运行脚本编写):&&&&&&&本讲除继续上一讲管理console主程序开发外,重点讲解如何在系统release版本中集成jdk,讲解如何编写系统管理主程序运行的run.bat,讲解run.bat中jvm参数的设置方法。通过本讲学习,学员可熟悉在实际项目中如何集成jdk及编写独立可运行的run.bat,并灵活运用与实际的开发工作中。&&&&&&&第十二讲:基金持仓明细功能开发3(用pdfbox和poi解析季报):&&&&&&&pdfbox和poi组件是java开发中使用广泛的开源组件,本讲讲解使用pdfbox解析基金季报,使用poi解析基金季报。通过本讲学习,学员应能学会使用Pdfbox和poi解析pdf和xls文档的通用方法,在实际工作中灵活运用。&&&&&&&第十三讲:基金持仓明细功能开发4(格式化季报数据入库) :&&&&&&&格式化季报从业务上讲包含本项目最复杂的业务逻辑,本讲重点讲解格式化季报的业务逻辑在service层的封装方法,异常季报数据的处理逻辑。通过本讲学习,学员应学会在service层中封装复杂业务逻辑的方法,学会java通用的文件及目录操作开发方法。&&&&&&&第十四讲:基金重仓股功能1:&&&&&&&基金重仓股往往是投资中黑马股的大本营,本讲讲述通过基金季报数据挖掘出基金重仓股的功能开发。&&&&&&&第十五讲:基金重仓股功能2:&&&&&&&基金重仓股在系统中可导出成为xls文件,本讲讲述通过poi导出xls文件的方法,并讲解在servce层中调用多个DAO的代码编写模式,在servcie层中进行平级调用的方法&&&&&&&第十六讲:基金公司股票持仓总计功能1(统计基金公司持仓):&&&&&&&基金公司持仓情况统计对股票投资实战具有重要指导意义,可看出基金公司的总体投资方向。本讲讲解该功能的需求、设计及开发方法&&&&&&&第十七讲:基金公司股票持仓总计功能2:&&&&&&&本讲继续讲解该功能的代码实现&&&&&&&第十八讲:股票增减仓明细功能1:&&&&&&&股票投资过程中,掌握基金对股票的增减仓情况,具有重要的投资指导意义,可以明确当前热门投资方向 ,回避投资风险。本讲讲解该功能的需求、设计及代码开发实现,介绍如何通过系统获取准确的股票增减仓数据。&&&&&&&第十九讲:股票增减仓明细功能2:&&&&&&&本讲继续讲解该功能的代码实现&&&&&&&第二十讲:基金公司股票增减仓明细功能:&&&&&&&股票投资中,掌握基金公司本季度对股票的增减仓情况,可以准确识别基金公司的抱团行为,分析基金公司投资方向变化。本讲讲解如何通过系统来挖掘这种重要数据,讲解该功能的需求、设计及代码开发实现&&&&&&&第二十一讲:股票持仓查询功能开发:&&&&&&&查询某只股票某一季度被基金持有多少,是最常用的功能,本讲介绍该功能的需求、设计及代码实现&&&&&&&第二十二讲:-数据清理功能开发:&&&&&&&数据清理功能是系统提供的一个维护功能,本讲讲解该功能的需求、设计及代码实现&&&&&&&第二十三讲:java socket编程基础:&&&&&&&本讲讲解java socket编程所涉及的基础知识,socket编程原理,常见编程方法等。通过本讲学习,学员应了解java socket编程的基本概念及常见模式,为后续socket server/socket client的开发打下基础&&&&&&&第二十四讲:Java 多线程编程基础:&&&&&&&本讲讲解java 多线程编程的发展历程,编程原理,重点讲解JUC的使用。通过本讲学习,学员应了解java 多线程编程的常见方法,为后续项目多线程开发的打下基础&&&&&&&第二十五讲:基金持仓服务器socket消息封装:&&&&&&&前端业务系统与本服务器间通过socket消息进行通讯,基本模式为comand模式,本讲讲解业务系统与本服务器之间的socket消息封装,介绍了常见的用java对象进行socket消息封装的模式&&&&&&&第二十六讲:单线程基金持仓socket server开发:&&&&&&&本讲讲解直接使用java thread开发一个socket服务器的方法,讲解socket server接收到前端业务系统socket消息后,如何通过命令模式调用service层获取结果。&&&&&&&第二十七讲:多线程基金持仓socket server开发:&&&&&&&本讲讲解使用JUC通过线程池开发实现多线程socket服务器的方法,通过采用JUC,服务器可承受前端业务系统大并发请求调用。&&&&&&&第二十八讲:socket客户端模拟器开发1:&&&&&&&本讲讲解前端业务系统请求调用模拟器的开发实现,采用模拟器可直接与基金持仓服务器进行系统联调、压力测试。讲解模拟器设计思路,模拟器代理编写&&&&&&&第二十九讲:socket客户端模拟器开发2:&&&&&&&讲解通过线程池实现多线程客户端模拟器的开发,通过多线程模拟器可模拟多客户端同时发起请求,调用多线程基金持仓服务器,可直接用于联调及压力测试&&&&&&&第三十讲:项目开发总结:&&&&&&&一个系统不是孤立存在的,在系统使用过程中会不断发展。本讲总结项目开发过程中用到的相关技术、开发方法、系统优点、缺点,及可改进处,并对系统后续发展进行展望。&&&&&&&课程资料购买,可以直接联系QQ&&&&&&&?
"持仓"相关文章
其它相关专题
您必须先实名认证才能提现,点击
来完成操作。
您必须先实名认证才能提现,点击
来完成操作。
下载手机客户端13909人阅读
scoket(3)
Java 开源 SOCKET 框架&&
,Netty2作者的后续之作,的之外,还有个,让你专心编写自己的业务代码,不用编写一行Tcp代码。
&&点击次数:291
Netty 2 提供了一组基于事件的API来开发高性能, 可管理的TCP/IP服务端或客户端应用程序. 对于要求建立高性能的网络应用来说,Netty提供许多基本特性,像readiness selection, 线程池, 写缓冲DoS的预防, 可重用的缓冲等.
&&点击次数:89
ColoradoFTP是一个开源完全遵循RFC 959(文件传输协议)的Java FTP服务器。它具有快速,可靠,易于扩展的特点。
&&点击次数:113
完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。 James也是一个邮件应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储。
&&点击次数:393
支持SMTP和POP3协议纯Java mail服务器。
&&点击次数:215
Java Sockets是一个Java类库模仿了C++ Sockets library的实现方式并基于SUN的java.nio.* 非阻塞网络I/O类。
&&点击次数:241
Raining Sockets是一个非阻塞的sockets框架.开发者可以利用它来构建高性能的可以发送与接收10000 socket连接的应用程序.
&&点击次数:453
基于java nio的Cindy提供一个简单,高效的异步I/O框架,支持tcp/udp/pipe并易于测试.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:780180次
积分:7639
积分:7639
排名:第2025名
原创:15篇
转载:383篇
评论:78条
(1)(1)(10)(3)(3)(1)(5)(1)(5)(9)(3)(9)(5)(15)(9)(7)(1)(1)(1)(7)(4)(4)(12)(1)(4)(7)(7)(5)(6)(8)(4)(5)(3)(10)(10)(2)(6)(7)(7)(3)(12)(5)(1)(4)(17)(8)(10)(14)(20)(16)(9)(28)(6)(1)(2)(4)(28)(3)}

我要回帖

更多关于 看篮球全部比赛 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信