当前位置:  技术问答>java相关

特急,特急,高手帮忙,感激不尽,感激不尽!!!

    来源: 互联网  发布时间:2015-08-25

    本文导语:  小弟本在C++上发展,谁知最近被调到网管部(电信网管),被迫用Java作开发。小弟只有c++基础(Java只懂点皮毛)。最近上面下来任务,说用两周时间做一员工管理系统(说是让我们熟悉环境而已)。具体需求如下:  ...

小弟本在C++上发展,谁知最近被调到网管部(电信网管),被迫用Java作开发。小弟只有c++基础(Java只懂点皮毛)。最近上面下来任务,说用两周时间做一员工管理系统(说是让我们熟悉环境而已)。具体需求如下:
  总体功能包括两部分:信息管理客户端和信息监视服务器
  客户端实现员工的基本信息的编辑(增,删,改),查询,统计(以图表形式显示),以及相关结果的导出(导出为Execel文件)和打印功能。
   信息监视服务器实现对客户端的启动.退出及相应的编辑操作监视。当用户在信息管理客户端进行编辑时,该监视器界面可实时显示客户端的操作和结果信息。
    小弟用一天时间看了一下,打算如下处理:
***********************************************************
整体框架分客户端。服务器端。数据库三块

客户端实现界面功能,通过Tcp/IP与服务器连接,将所需实现功能及参数以字串形式发往服务器,由服务器实现

服务器始终处于监听状态,监听客户端状态并处理客户端的请求与数据库交互。服务器根据接受到的前n个字符判断请求命令,作出相应处理。

我看了几个例子:基本实现了两点之间通过Tcp/IP协议通讯,但只能做到两点通讯,通过ServerSocket实现监听,通过一个Socket实现通讯处理
***************************************************************
问题1:怎样实现一服务器对多终端通讯
///////////////////////////////////////
问题2:当客户端出现断开时,因出现异常通信断开,重启客户端后还可以建立连接,说明服务器还处于监听状态,但无法通讯,说明服务器端通讯线程结束,请问怎样使服务器端在通讯断开后,还能恢复到正常监听状态。
////////////////////////////////////////
问题3:怎样实现服务器与数据库的操作(数据库要求用Access),对java下的数据库操作,小弟一点不懂,请高手赐教,不尽感激
**************************************************************
此次任务关系到本人前途问题,希望各位高手多多提携,有何建议万望注明,多谢多谢
事成之后,有功之人,每人加30分(我分不多,只能如此),万望高手救小弟与水深火热之中。再次感谢,很急,两周时间,已过一天,救我啊
         *************SOS********SOS*********SOS***************

*********注:小弟用JBuilder5作开发



  

|
1.你可以用Thread建立连接,因为目前JDK1.3还没有直接提供方法来限制一个服务器无响应发生的连接超时(setSoTimeout是设定普通连接超时的,此时不适用)。大家常用的方法是为每个连接建立一个线程。这样多个线程可以同时服务多个客户,而且可以设置优先级。
2。“当客户端出现断开时,因出现异常通信断开,重启客户端后还可以建立连接,说明服务器还处于监听状态,但无法通讯,说明服务器端通讯线程结束,请问怎样使服务器端在通讯断开后,还能恢复到正常监听状态。"这段话?我估计你也没有用C++写过此类中等规模的项目,C++和Java大多数都是用多线程这样做的,很类似,如果以前用VC做过,你不会遇到困难,而且你会发现Java的线程用起来比VC太简单了。"异常通信断开"和服务器的侦听哪里有什么关系,侦听返回一个sock之后,交给一个新线程去处理,服务器马上继续侦听。所以你的第二个问题在这种设计模式下不存在。
3。Access可不是什么像样的数据库引擎,很少有人用Access的,只有对性能要求极低时才用它,建议你使用Oracle,如果对性能要求很高,建议IBM的DB2.不过没关系,用什么数据库都不影响你的编程,因为有了JDBC!先找一个JDBC驱动程序如PointBase,如果找不到,就用JDBC:ODBC网桥(不赞成使用)。
建议你看一看Ivor Horton的Beginning Java, 电子工业出版社有中译版--"Java编程指南",还有就是Cay Horstmann的Core Java, 机械工业出版社有中译版--“Java 2 核心技术”,再给你几段代码看一看(原自Core Java):

创建连接
public static Connection getConnection()
      throws SQLException, IOException
   {  Properties props = new Properties();
      String fileName = "QueryDB.properties";
      FileInputStream in = new FileInputStream(fileName);
      props.load(in);

      String drivers = props.getProperty("jdbc.drivers");
      if (drivers != null)
         System.setProperty("jdbc.drivers", drivers);
      String url = props.getProperty("jdbc.url");
      String username = props.getProperty("jdbc.username");
      String password = props.getProperty("jdbc.password");

      return
         DriverManager.getConnection(url, username, password);
   }
取数据集:
 try
      {  con = getConnection();
         stmt = con.createStatement();

         String query = "SELECT Name FROM Authors";
         ResultSet rs = stmt.executeQuery(query);
         while (rs.next())
            authors.addItem(rs.getString(1));

         query = "SELECT Name FROM Publishers";
         rs = stmt.executeQuery(query);
         while (rs.next())
            publishers.addItem(rs.getString(1));
      }
      catch(Exception e)
      {  result.setText("Error " + e);
      }
再给你一个建连接的类
class SocketOpener implements Runnable
{  public static Socket openSocket(String aHost, int aPort,
      int timeout)
   {  SocketOpener opener = new SocketOpener(aHost, aPort);
      Thread t = new Thread(opener);
      t.start();
      try
      {  t.join(timeout);
      }
      catch (InterruptedException exception)
      {
      }
      return opener.getSocket();
   }

   public SocketOpener(String aHost, int aPort)
   {  socket = null;
      host = aHost;
      port = aPort;
   }

   public void run()
   {  try
      {  socket = new Socket(host, port);
      }
      catch (IOException exception)
      {
      }
   }

   public Socket getSocket()
   {  return socket;
   }

   private String host;
   private int port;
   private Socket socket;
};

得到sock之后,再建个线程处理此连接吧。

总之,Java就是慢,但用起来比C++容易太多了。
这下总明白了吧?
如果还不明白,看看Core Java, 绝对好书。上面的代码均出自Core Java.



    
 
 

您可能感兴趣的文章:

  • linux ftp 配置 望高手指教,感激不尽
  • 请斑竹和高手们帮我解释一下:范式中的*的作用!感激不尽
  • 困扰了几天的问题,望高手帮忙,谢谢大家了,感激不尽!!
  • 请各位Unix高手帮小弟解决下问题,感激不尽啊!
  • 关于文件下载的问题!高手们呀,帮帮忙呀!感激不尽呀!
  • 各位高手能谈谈UNIX 与WINDOWS的主要区别在那吗?小生不胜感激!!!!!
  • 我想安装redhat linux7.3,但我发现有3张光盘和5张光盘的,不知哪个好,请高手告知一二,不胜感激
  • 过来人指点!!感激!!我想做嵌入式开发!!高手看一下这个配置可以吗??
  • ####多线程的Server core,各位高手请进来帮忙看一下,不胜感激!(分还要加)####
  • VMware虚拟机linux系统,在启动的时候弹出eth0的时候失败了。进入系统的时候,输入ifconfig没有IP,这是什么情况???那位高手帮帮忙,不甚感激
  • jsp调用bean的初级问题,希望高手指教,不甚感激!
  • 碰到一个难题,Linux高手请进,不胜感激! 愿以1000分相赠!
  • 懂装多系统的高手请进,万分感激!!!
  • 跪求高手帮忙,小弟不甚感激!
  • 编译socket程序出现的提示,我菜鸟不懂,高手能否指点一下!万分感激!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • webmail问题,请高手帮忙!!!谁会使用IMP 3.0????!!!
  • 高手帮忙解释
  • 那位高手帮忙 100分
  • ★★★在linux下编译pro*c文件,提示"sqlcxt"没有定义,哪位高手帮忙,定赠分!
  • 装linux遇到问题,有高手在线帮忙吗?请发信息给我
  • free BSD ROOT密码丢失。请高手帮忙
  • red hat 9 不能上网了,请高手帮忙
  • 如何获取 文件类型?文件更新日期?多谢高手帮忙!
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手) iis7站长之家
  • 升级Linux的问题,急!请高手帮忙!
  • 高手帮忙!linux初次安装的问题?
  • 急!高手帮忙!cximage库在Linux下运行使用的问题。
  • 高手帮忙,pkg安装包结束后,如何启动GUI程序?
  • 请高手帮忙
  • 请高手帮忙想个shell脚本
  • 高手帮帮忙,SHELL脚本编程~~~~~~~~~~~~~~~~~~
  • 限制ssh登录,放开sftp登录,怎么办?跪求高手帮帮忙!
  • 不小心远程注销了linux,然后再进去时桌面不见?急!!在线等,高手帮忙啊!
  • 一个linux shell编程求素数问题 高手帮帮忙啊
  • 100分 , 请高手帮忙...,linux网络配制,得解立即结贴
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3