Connection(cUser,"sa","");//创建连接
stmR=connR.createStatement();//创建SQL语句对象
}
catch(ClassNotFoundExceptiones)//捕获ClassNotFoundException异常
{
es.printStackTrace();//打印异常抛出地点等信息
}
}
catch(SQLExceptionex)//捕获SQLException异常
{
ex.printStackTrace();
}
以上代码是实现数据库的连接,可以连接到服务器名为serverName的SQLServer2000网络数据库。
StringupdateStatePort="updateYongHusetState=1,Port="+port+"whereUserName='"+userName+"'";
//设置用户为在线,将本地使用的Port在数据库服务器上更新的SQL语句
StringupdateIPAddresss="updateYongHusetIPAddress='"+localIP+"'whereUserName='"+userName+"'";//更新数据库服务器上用户的IP地址
inti=stmR.executeUpdate(updateState);//执行SQL语句
intl=stmR.executeUpdate(updateIPAddresss);//执行SQL语句
以上代码可以实现数据库的更新:当用户登录后,在网络数据库服务器上将其状态设为在线,即State为1,并将用户本地的IP地址,与端口号在表内更新。
4.4Java局域网解决方案
4.4.1C/S的概念
客户机/服务器网络中,以计算机主机或服务器为中心,其他计算机、工作站与服务器连接在一起。客户机之间要传递信息均要得到服务器的允许才能进行。在C/S模式中,将请求服务的一方称为客户(C1ient),将提供服务的一方称为服务器(Server)。服务程序一直在一个服务地址(端口)监听对该服务的请求,直到客户对这个服务地址提出请求,服务程序为客户请求作出适当的反应。
4.4.2用Socket实现C/S编程
套接字(Socket)编程采用客户机/服务器的网络模式。服务器进程一直驻守在服务器上,客户进程向服务器进程发出连接请求,服务器进程响应并建立连接;服务进程与客户进程建立连接后,客户进程发送数据,服务进程处理这些数据并将处理结果返回给客户端进程。
4.4.3JavaSocket
Java语言为实现其跨平台、制定Internet标准语言、增强与用户的互动等目标,在吸收BSD接口函数优点的基础上,加入Java跨平台、面向对象、支持Internet等特点,推出JavaSocketAPI软件--Java.net。
Java.net的API分为4类:处理URL的java.net.URL;处理主机名称和IP地址的java.net.InetAddress;处理UDP通信协议的java.net.DatagramPacket、java.net.DatagramSocket、java.net.DatagramSocketlmpl等;处理TCP通信协议的java.net.ServerSocket、java.net.Socket、java.net.Socketlmpl。
而我们的实际应用中很多程序是基于TCP/IP网络编程的,这些应用程序中服务器端和客户端要用到的SocketAPI有:
A)服务器端的API:
(1)java.net.ServerSocket设置通信端口。
(2)accept侦听及接受客户端的连接请求,并建立与客户端的连接。
(3)read接受来自客户端发送的数据。
(4)write发送数据到客户端。
(5)close关闭Socket及客户端的通信连接。
B)客户端的API:
(1)iava.net.Socket建立客户端的Socket并尝试与服务器建立连接。
(2)read接受来自服务器端发送的数据。
(3)write将数据发送到服务器端。
(4)close关闭Socket及与服务器端的连接。
4.4.4JavaSocket在C/S中的体系结构
服务器端程序用ServerSocket创建服务器进程,并用accept方法来进行监听并建立与客户端的连接,处理客户端请求,并将处理结果返回给客户端。客户端程序用Socket创建客户端进程并与服务器建立连接,发送数据给服务器端并接受服务器的处理结果。javaSocket在C/S模式中的进程交互过程如图3-3,Socket是网络编程的基础,无论是服务器端还是客户端程序,Socket都是不可缺少的元素。
图3-2javaSocket在C/S模式中的进程交互过程图
4.4.5极光办公自动化系统网络连接
voidjButton7_actionPerformed(ActionEvente){//发送按钮按下时触发的事件
StringsendLine=jTextField1.getText();//得到发送内容
for(inti=0;i
try{
Socketsocket=newSocket(listIP.get(i).toString(),8080);
//与对方的8080端口建立连接
out=newPrintWriter(newBufferedWriter(newOutputStreamWriter(
socket.getOutputStream())),true);//建立输出流
out.println(sendLine);//将发送内容输到输出流
socket.close();//关闭连接
}
catch(Exceptionex){
try{
socket.close();//如果发生异常也会关闭输出流
}
catch(IOExceptionec){
}
ex.printStackTrace();
}
}
}
以上是客户端的代码。它可以实现:在主界面中,用户点击发送按钮,系统就会根据listIP里的IP地址与服务器建立连接,其中listIP中的地址会在用户点击JTree时生成。连接成功后,会与服务器端建立输出流,以便输出信息。
classServerThreadextendsThread{//建立内部类
publicvoidrun(){//内部类所执行的动作
try{
server=newServerSocket(ZhuFrame.PORT);//建立ServerSocket
while(true){
socket=server.accept();//等待客户端的连接
try{
StringuserName="";
StringuserIP=socket.getInetAddress().toString().replaceAll("/","");
//得到连接成功后的客户端的IP地址
StringselectUser="selectUserName,StatefromYongHuwhereIPAddress='"+userIP+"'";//根据IP地址查找用户名
ResultSetr5=stmR.executeQuery(selectUser);
while(r5.next()){
userName=r5.getString("UserName");
if(r5.getInt("State")==1){
in=newBufferedReader(newInputStreamReader
(socket.getInputStream()));//建立输入流
StringgetStr=in.readLine();//在输出流中读数据
Stringstr=userName+"对你说:"+getStr;
jdbTextArea1.append(str.replaceAll("","")+"\n");
//输出读到的内容
socket.close();//关闭Socket
if(jTextArea2.getText().equals("请选择成员或部门")){
jTextArea2.append("发送对象:"+userName);
list.clear();//清空用户名列表
listIP.clear();//清空IP地址列表
list.add(userName);//向用户名列表中加入发信息人的用户名
listIP.add(userIP);//向IP地址列表中加入IP地址
}
}
}
r5.close();
}
catch(Exceptione){
e.printStackTrace();
socket.close();
}
}
}
catch(IOExceptione){
e.printStackTrace();
}
}
}
以上是服务器端的代码。它是一个线程,当调用accept方法后,进入等待状态,等待客户端程序的连接。当连接建立后会建立与客户机的输入流,以便接收信息。如果接受者处于等待状态那么会把发信息职员的用户名与IP地址分别保存到list与listIP两个表中以便接受者直接回复信息,节省查找用户的时间。
4.5系统界面解决方案
4.5.1JavaSwing的原理和特点
Java开发工具包(JDK)包含了一个复杂的图形API和用户接口API的集合,该集合的核心软件被称为Java的基础类(JFC)。JavaSwing是JFC中的一个重要的技术,其组合了大量的可用于构建复杂用户界面的轻量级组件。Swing组件是现有的抽象窗口工具包AWT组件的增强,但它又不完全取代AWT组件,这两种组件可以用在同一个界面上。本系统选择JavaSwing组件进行开发,是由于Swing组件具有两个很显著的特点:轻量级和可插入外观。
·轻量级组件并不是指其体积小,而是组件不依赖于"对等类"("Peer"classes)而由Java的其他类所支持。所谓"对等类"是指本机系统类。因为JavaSwing中的大多
上一篇:
JAVAJME贪吃蛇游戏的设计(论文和程序)
下一篇:
试题库管理系统毕业论文