湖南农业大学课程设计论文.docx

上传人:b****6 文档编号:7388828 上传时间:2023-01-23 格式:DOCX 页数:12 大小:44.32KB
下载 相关 举报
湖南农业大学课程设计论文.docx_第1页
第1页 / 共12页
湖南农业大学课程设计论文.docx_第2页
第2页 / 共12页
湖南农业大学课程设计论文.docx_第3页
第3页 / 共12页
湖南农业大学课程设计论文.docx_第4页
第4页 / 共12页
湖南农业大学课程设计论文.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

湖南农业大学课程设计论文.docx

《湖南农业大学课程设计论文.docx》由会员分享,可在线阅读,更多相关《湖南农业大学课程设计论文.docx(12页珍藏版)》请在冰豆网上搜索。

湖南农业大学课程设计论文.docx

湖南农业大学课程设计论文

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1