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

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

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

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

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

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




...全文
104 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
DanielYWoo 2002-09-05
  • 打赏
  • 举报
回复
说得我都不好意思了,大家共同提高吧
silverfoxking 2002-09-05
  • 打赏
  • 举报
回复
to:DanielYWoo
不知道怎样表达我的谢意,在接触一门新语言的时候,能得到明白人的指点是一件很荣幸的事情。在你以及像你一样热心的人的帮助下,我工程中的困难已经基本解决了。正如你所讲,我是通过多线程实现了服务器与多终端的交互。关于第二个问题,我当时的想法确实有点幼稚,不过现在我已经明白了。关于数据库部分,考虑用access主要是考虑到它的简单(毕竟初学,原理第一^_^),我们真正的工程都是用Sybase做的。关于数据库的连接,我也有了一定的认识。再次感谢。希望有机会能更深入的探讨些java方面的问题(不知我有无这份资格,还望大哥不弃),无以为赠,现送上积分30,还望笑纳^_^
DanielYWoo 2002-09-05
  • 打赏
  • 举报
回复
ps.
如果领导不介意,用JSP+servlet于JRun3.0也是个不错的主意,但是那是基于Web编程,性能和功能远远远远不如Java Application, 最好用EJB, 但鉴于你是初学者(我也不是高手),暂且别用EJB, 等以后再用吧,呵呵
DanielYWoo 2002-09-05
  • 打赏
  • 举报
回复
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.


fileslong 2002-09-04
  • 打赏
  • 举报
回复
工程很大,不是一个人搞定吧,我看至少个把月
hnalbert 2002-09-04
  • 打赏
  • 举报
回复
强烈建议用B/S,省去socket通讯!:)
AWP365 2002-09-04
  • 打赏
  • 举报
回复
b/s还是c/s?
Joeblackyang 2002-09-04
  • 打赏
  • 举报
回复
对java不熟的话,建议不要做得太复杂,直接用servlet连数据库比较容易。
wjmmml 2002-09-04
  • 打赏
  • 举报
回复
同情你!
网络咖啡 2002-09-03
  • 打赏
  • 举报
回复
不知道,up

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧