内蒙古农业大学学士学位论文 22
public void run() { }
private void modifypasswdHandle(Response res) {
if(res.getData()!=null){ while(s.isConnected()){ }
try { }
Response res=(Response)ois.readObject(); if(res!=null){ }
e.printStackTrace(); e.printStackTrace();
RequestType type=res.getType(); if(type.equals(RequestType.online)){ }
onlineHandle(res); offlineHandle(res);
changeInformationHandle(res); modifypasswdHandle(res); receiveMessageHandle(res); individualTalkHandle(res); receiveFileHandle(res); publicInfoHandle(res);
}else if(type.equals(RequestType.offline)){
}else if(type.equals(RequestType.changeInformation)){ }else if(type.equals(RequestType.modifypasswd)){ }else if(type.equals(RequestType.receiveMessage)){ }else if(type.equals(RequestType.individualTalk)){ }else if(type.equals(RequestType.receiveFile)){ }else if(type.equals(RequestType.publicInfo)){
} catch (EOFException e) { } catch (Exception e) {
内蒙古农业大学学士学位论文 23
}
}
JOptionPane.showMessageDialog(null, \密码修改成功\
JOptionPane.showMessageDialog(null, \密码修改失败\\n服务器忙,请
}else{
稍后再试!\
private void changeInformationHandle(Response res) { }
private void publicInfoHandle(Response res) { }
private void receiveFileHandle(Response res) { }
private void individualTalkHandle(Response res) {
Message message=(Message)res.getData(); User user=message.getFrom();
if(!ClientMainClass.individual.containsKey(user.getId())){
int flag=JOptionPane.showConfirmDialog(null,user.getName()+\请if(flag==JOptionPane.NO_OPTION){ }
IndividualTalkWindow indi=new IndividualTalkWindow(user);
return;
String str=(String)res.getData(); publicInfo.setText(str); if(res.getData()!=null){ }
JOptionPane.showMessageDialog(null, \修改成功\
JOptionPane.showMessageDialog(null, \服务器忙,请稍后再试!\}else{
求与你私聊,是否接受?\
内蒙古农业大学学士学位论文 24
}
}
ClientMainClass.individual.put(user.getId(), indi.showMe();
indi.getReceivedmessageArea().getTextPane());
JTextPane jtp=ClientMainClass.individual.get(user.getId()); try {//输出信息发送人,时间
jtp.getDocument().insertString(jtp.getDocument().getLength(),
user.getName()+\
\
} catch (BadLocationException e) { }
//输出信息
message.analysisMessage(jtp);
e.printStackTrace();
private void receiveMessageHandle(Response res) {
receive.getDocument().insertString(receive.getDocument().getLength(), }
private void offlineHandle(Response res) {
message.getFrom().getName()+\
set);
} catch (BadLocationException e) { }
//输出信息
message.analysisMessage(receive);
e.printStackTrace();
Message message=(Message)res.getData();
if(ClientMainClass.shield.contains(message.getFrom().getId())){ }
try {//输出信息发送人,时间
return;
内蒙古农业大学学士学位论文 25
User user=(User)res.getData();
ClientMainClass.onlineUsers.remove(user); userList.freash(ClientMainClass.onlineUsers); Calendar c = Calendar.getInstance(); String
time=c.get(Calendar.YEAR)+\Y_OF_MONTH)+\
private void onlineHandle(Response res) {
User user=(User)res.getData(); ClientMainClass.onlineUsers.add(user); userList.freash(ClientMainClass.onlineUsers); Calendar c = Calendar.getInstance();
String time=c.get(Calendar.YEAR)+\
c.get(Calendar.DAY_OF_MONTH)+\
\
receive.getDocument().insertString(receive.getDocument().getLength(),
user.getName()+\上线\\n\set);
c.get(Calendar.MINUTE)+\
try {
(c.get(Calendar.HOUR_OF_DAY)+8)+\
receive.getDocument().insertString(receive.getDocument().getLength(), }
}
user.getName()+\下线\\n\
} catch (BadLocationException e) {
e.printStackTrace(); try {
Calendar.SECOND);
} catch (BadLocationException e) {
e.printStackTrace();
内蒙古农业大学学士学位论文 26
}
}
}
4 系统设计与实现 4.1开发环境工具
基于JAVA聊天系统的设计主要运用JAVA与语言与Socket类结合而开发。其开发的主要环境包括:
服务器端:(Windows平台)首先应有java环境jdk,建议采用jdk1.5以上,另外还需配置classpath环境变量,添加Hibernate运行所需要的jar包,本系统开发工具为MyEclipse5.5;
客户端:只要有java环境jdk就可以,建议jdk1.5。
4.2 硬件环境
本系统运行环境所需用到的环境为: 硬件配置 :
中央处理器(CPU) :P4 2.0G的处理器; 硬 盘:40GB以上硬盘; 内 存:512 DDR内存; 显示器:17寸显示器等; 显 卡:128M显存显卡
软件环境:WINDOWS XP、tomcat5.5、Eclipse、jdk1.6.03等。
4.3网站功能模块的测试
本次课设的编译环境,及编写平台为java。主要用到的类为java.net包中的Socket类和javax.swing包中的类。
服务器线程在程序运行期间一直有效,接受客户端请求信息,转发客户端聊天内容,
查看用户信息。
客户端运行时必须先登陆,登陆界面如图1,聊天程序主界面如图2,可以和所有在线用户群聊,也可以和某个用户私聊如图3。并且可以查看用户信息和修改自己的信息。
本系统实现了选择图像,发送表情,,自动刷新在线用户等功能。