湖南农业大学课程设计论文.docx
- 文档编号:7388828
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:12
- 大小:44.32KB
湖南农业大学课程设计论文.docx
《湖南农业大学课程设计论文.docx》由会员分享,可在线阅读,更多相关《湖南农业大学课程设计论文.docx(12页珍藏版)》请在冰豆网上搜索。
湖南农业大学课程设计论文
J2EE课程论文
学院:
东方科技学院
班级:
2011级计算机2班
姓名:
李方剑
学号:
5
课程论文题目:
B/S结构在线聊天系统的设计与实现
课程名称:
J2EE与中间件
指导老师:
乔波
六.示例展示11
B/S结构在线聊天系统的设计与实现
摘要:
本系统是java基于c/s模式的聊天室程序。
聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器端才能实现正常的聊天功能。
基于java的聊天室是利用Eclipse开发包工具进行开发出的一款网络聊天室。
这款聊天室是套接字通信开发采用c/s模式的聊天室程序。
聊天室共分为服务器端和客户端两个部分,服务器端的程序主要负责侦听客户端发来的消息,客户端需要登录带服务器端才能实现正常的聊天功能。
关键字:
java聊天;
引言
目前许多的web应用程序都需要提供即时聊天系统,用来传递及时的消息,方便用户与其他用户之间交换信息。
这是一个有java开发的B/S模式的即时聊天系统,能实现两个用户或多个用户之间的即时聊天。
一·功能简介
本系统是java基于c/s模式的聊天室程序。
聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器才能实现正常的聊天功能。
(1)服务器端的主要功能有:
a.在特定端口上进行侦听,等待客户端连接。
b.用户可以配置服务器的侦听端口,默认是8889.
c.可以向已经连接的客户端发送体统消息。
d.统计在线人数。
e.停止服务时,断开所以的用户连接。
(2)客户端的主要功能有:
a.连要连接的服务器接到已经开启聊天服务的服务端。
b.用户可以配置要连接的服务器IP地址和端口号。
c.用户可以配置连接后的用户名。
d.服务器开启时,用户可以随时登录与注销。
e.用户可以想所以的人或者指定的个人发送消息。
二·开发环境简介
操作系统:
linux
开发工具:
JDK1.4
Eclipse、Eclipseme插件
三.套接字通信
套接字通信(socket)是网络的基本通信单元,又称为端口,通常用来实现客户和服务方的连接。
网络上的两个程序通过双向的连接实现数据的交换,实现双方通信钱链路的每一端都建立一个socket,通过对socket的读写操作实现网络的通信功能。
Socket通信的过程主要有:
创建socket,打开连接到socket的输入流和输出流,按照一定的协议对socket进行读写操作,关闭scoket这四个步骤,通过这个四个步骤可以完成一般的socket通信。
为了完成socket通信,包中提供了socket和serverSocket这两个类,它们分别用来表示双向连接的客户端和服务器端,它们的构造函数有:
Socket()
通过系统默认类型的SocketImpl创建未连接字
Socket(InetAddressaddress,intport)
创建一个流套接字并将其连接到指定IP地址的指定端口号。
Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalport)
创建一个套接字并将其连接到指定远程端口上的指定远程地址。
Socket(Proxyproxy)
根据不管其他设置如何都应使用的指定代理类型(如果有),创建一个未连接的套接字。
Socket(SocketImplimpl)
创建带有用户指定的SocketImpl的未连接Socket。
Socket(Stringhost,intport)
创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort)
创建一个套接字并将其连接到指定远程主机上的指定远程端口。
其中端口号涉及到一个分配的问题,TCP/IP将端口号分成了两个部分,少量的作为保留端口,端口号小于256,以全局方式分配给服务进程。
因此每一个标准服务器都拥有一个全局公认的端口,即使在不同的机器上其端口号也是不同的。
对于常见的端口号主要有:
80端口提供www服务,23提供ftp服务,110提供pop服务。
剩余的为自由端口。
四、概要设计
本系统是java基于c/s模式的聊天室程序。
聊天室共分为服务器端和客户端两个部分,服务器端程序主要侦听客户端发来的消息,客户端需要登录到服务器端才能实现正常的聊天功能。
服务器端的程序客户端的程序
建立连接
设置IP与端口号
IP:
192.168.5.72
端口号:
8889
IP:
192.168.5.72
端口号:
8889
4.1.聊天室服务器端设计。
(1)图形界面的设计事件处理。
调用java.swing和java.awt包进行图形界面处理和java.swing.event与java.awt.event事件的侦听处理。
(2)实现服务器消息的收发
分别定义向所有用户或某一个用户发送消息的方法。
(3)定义用户的管理
定义添加用户,删除用户,返回用户数目,根据用户名查找用户,根据索引查找用户。
(4)设计帮助文档
单击帮助按钮,弹出一对话框显示本系统的有关信息。
4.2聊天室客户端设计
(1)图形界面以及事件处理
调用java.swing和java.awt包进行图形界面处理和java.swing.event与java.awt.event事件的侦听处理。
(2)实现消息的收发
分别定义向所以或某一个用户发送消息的方法。
(3)侦听端口的修改配置
用户对所要连接的服务器IP及侦听端口进行修改配置
(4)设计帮助文档
单击帮助按钮,弹出一对话框显示本系统的有关信息,为用户提供信息帮助。
五.详细设计
5.1服务器端的设计
界面设计在应用程序很重要。
造就一款成功的聊天室软件,抛开其他各种因素不谈,主菜单的设计非常重要,其关键是可用性。
界面的可用性是指高效、易用、易学、易记。
如果用户界面不友好,即使用户对其感兴趣,由于菜单的原因使缺乏人性化设置,用户也不会再使用这个软件。
一个友好的界面是非常关键的,界面设计必须在软件设计时就进行事件添加和事件侦听和事件处理。
调用serverlisten()来实现服务器端用户上线和下线的侦听,调用serverReceive()来实现服务器的消息收发。
5.2实现服务器消息的收发
分别定义向所有用户或某一个用户发送消息的方法。
5.3用户侦听设计
主要函数调用该方法用于侦听用户的上线与下线,但必须调用userLinklist()来实现那的,用户在线情况发生变换时,该类会对主类的界面进行修改。
实现代码如下:
PublicclassServerListenextendsThread{
ServerSocketserver;
JComboBoxcombobox;
JTextAreatextarea;
UserLinkListuserLinkList;//用户链表
Nodeclient;
ServerReceiverecvThread;
PublicBooleanistop
/*
*聊天服务器端的用户上线与下线侦听类
*/
PublicServerListen(ServerSocketserver,JComboBox,JTextAreatextarea,JTextFieldtextfield,UserLinkListuserLinkList)
{
this.server=server;
bobox=combobox;
this.textarea=textarea;
this.textfield=textfield;
this.userLinkList=userLinkList;
isStop=false;
}
Publicvoidrun(){
While(!
isStop&&!
server.isClosed()){
Try{
Client=newNode();
Client.socket=server.accept();
Client.output=new
ObjectOutputStream(client.socket.getOutputStream());
Client.output.flush();
Client.input=new
ObjectInputStream(client.socket.getInoutStream());
Client.username=(string)client.input.readObject();
//显示提示信息
Combobox.addItem(client.username);
userLinkList.addUser(client);
textarea.append(“在线用户”+userLinkList.getCount()+”人\n”);
recThread.start();
}
Catch(Exceptione){
}
}
}
}
5.4定义用户的管理
定义添加用户,删除用户,返回用户数目,根据用户名查找用户,根据索引查找用户。
代码实现如下:
PublicclassUserLinkList{
Noderoot;
Nodepointer;
Intcount;
PublicUserLinkList(){
root=newNode();
root.next=null
pointer=null;
count=0;
}
publicvoidaddUser(Noden){
pointer=pointer.next;
}
Pointer.next=n;
n.next=null;
count++;
}
poblicvoiddelUser(Noden){
pointer=root;
while(pointer.next!
=null){
if(pointer.next==n){
pointer.next=n.next;
count--;
break;
}
Pointer=pointer.next;
}
}
publicintgetCount(){
returncount;
}
publicNodefindUser(Stringusername){
if(count==0)returnnull;
pointer=root;
while(pointer.next!
=null){
pointer=pointer.next;
if(pointer.username.equalsIgnoreCase(username)){
returnpointer;
}
}
Returnnull;
}
pulicNodefindUser(intindex){
if(count==0){
returnnull;
]
Pinter=root;
Inti=0;
while(i if(pointer.next! =null){ pointer=pointer.next; } else{ returnnull; } i++; } returnpointer; } } 5.5设计帮组文档 单击帮助按钮,弹出一对话框显示系统的有关信息,为用户提供信息帮助。 代码实现如下: publicclassHelpextendsJDialog{ JPaneltlePanel=newJPanel(); JPanelcontentPanel=newJPanel(); JPanelclosePanel=newJPanel(); JButtonclose=newJButton(); JLabeltitle=newJLabel(“聊天室服务器端帮助”); JTextAreahelp=newJTextArea(); Colorbg=newColor(255,255,255); publicHelp(JFrameframe){ supper(frame,true); try{ jbInit(); } catch(Exceptione){ e.printStackTrace(); } DimensionscreenSize= Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation((int)(screenSize.width–400)/2,(int)(sreenSize.height–320)/2); this.setResizable(false); } privatevoidjbInit()throwsExcption{ this.setSize(newDimension(400,200)); this.setTitle(“帮助”); titlePanel.setBackground(bg); contentPanel.setBackground(bg); closePanel.setBackground(bg); help.stText(“1、设置服务器端的侦听端口(默认端口为8888)。 \n”+ “2、点击启动服务按钮便可在指定的端口启动服务。 \n”+ “3、选择需要接受消息的用户,在消息栏中写入消息,之后便可发送消息。 \n”+ “4、信息状态栏中显示服务器当前的启动与停止状态、”+ “用户发送的消息和\n服务器端发送的系统消息。 ”); help.setEditable(false); titlePanel.add(newLabel(“”)); titlePanel.add(title); closePanel.add(newLabel(“”)); ContainecontentPane=getContentPane(); contentPane.seatLayout(newBorderLayout()); contentPane.add(titlePanel,BorderLayout.CETER); contentPane.add(contentPanel,BorderLayout.CENTER); contentPane.add(clpsePanel,BorderLayout.SOUTH); close.setText(“关闭”) //事件处理 close.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEvente){ dispose(); } } } } } 六.示例展示 七.参考文献 [1] 吕海东张坤《Java EE企业级应用开发实例教程》清华大学出版社2010.8 [2] 张蓓赵国锋《JSP数据库通用模块开发与系统移植》清华大学出版社2007.4 [3] 赫玉龙《J2EE编程技术》清华大学出版社 北京交通大学出版社2005.3 [4] Java程序设计实用教程(第3版) 电子工业出版社2010.2 [5] 数据库系统教程(第3版)高等教育出版社 2008.7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南 农业大学 课程设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)