java课程设计报告--聊天小程序…文档格式.docx

上传人:b****9 文档编号:13072351 上传时间:2022-10-04 格式:DOCX 页数:23 大小:196.35KB
下载 相关 举报
java课程设计报告--聊天小程序…文档格式.docx_第1页
第1页 / 共23页
java课程设计报告--聊天小程序…文档格式.docx_第2页
第2页 / 共23页
java课程设计报告--聊天小程序…文档格式.docx_第3页
第3页 / 共23页
java课程设计报告--聊天小程序…文档格式.docx_第4页
第4页 / 共23页
java课程设计报告--聊天小程序…文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

java课程设计报告--聊天小程序…文档格式.docx

《java课程设计报告--聊天小程序…文档格式.docx》由会员分享,可在线阅读,更多相关《java课程设计报告--聊天小程序…文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

java课程设计报告--聊天小程序…文档格式.docx

2、能实现一个聊天室中的多人聊天;

3、可以实现两个私聊;

四、设计说明书应附有下列图纸:

运行结果截图

五、小组分工说明:

六、命题发出日期:

2014.12.29 设计完成日期:

2015.1.14

指导教师评语

成绩:

指导教师(签章):

年 月 日

山东科技大学学生课程设计

目 录

1需求分析说明 1

1.1背景 1

1.2功能要求 1

1.3运行环境 1

1.4功能实现 1

2概要设计说明 2

2.1模块调用图 2

2.2套接字连接示意图 2

2.3主要函数声明 2

3详细设计说明 4

3.1功能描述 4

3.2主要功能详述 4

3.3主要代码分析 5

4调试分析 9

4.1遇到的问题 9

4.2测试结果分析 10

5用户使用说明 10

6课程设计总结 12

7附录 13

1.1背景

1 需求分析说明

19

在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。

此课程设计的题目是聊天小程序,巩固所学的Java语言基本知识,增进Java语言编辑基本功,拓宽常用类库的应用。

使我们把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法。

1.2功能要求

1、使用图形用户界面。

2、能实现一个聊天室中多人聊天。

3、可以两人私聊。

1.3运行环境

本程序基于Java和Eclipse开发环境,可以在一般的装有Windows系统的主机上运行。

1.4功能实现

程序实现了聊天室的基本功能,其中有:

1、启动服务器。

2、进入客户端界面。

3、登录聊天室。

4、发送信息。

5、关闭服务器。

6、输入昵称。

7、发送消息并收到其他客户的消息。

2.1模块调用图

2概要设计说明

2.2套接字连接示意图

2.3主要函数声明

1、Socket的构造方法如下:

Socket(Stringhost,intport)

参数host是服务器的IP地址,port是一个端口号。

2、ServerSocket的构造方法如下:

ServerSocket(intport)

port是一个端口号。

port必须和客户呼叫的端口号相同

3、当建立时可能发生IOException异常,因此应像下面那样建立到服务器的套接字连接:

Try

{

Socketmyscoket=newSocket(“http:

//192.168.0.78”,1880);

Catch(IOExceptione){}

4、当建立服务器时可能发生IOException异常,因此,应像下面那样建立接收客户的服务器套接字:

ServerSocketserver_scoket=newServerSocket(1880);

}

比如1880端口已被占用时,就会发生IOException异常。

5、当服务器的ServerScoket对象server_socket建立后,就可以使用

accept()方法接收客户的套接字连接呼叫,代码如下:

Server_socket.accept();

6、客户使用Socket类不带参数的构造方法Socket()创建一个套接字对象,该

对象需调用

Publicvoidconnect(SocketAddressendpoint)throwsIOException

请求和参数SocketAddress指定地址的套接字建立连接,为了使用connect

方法,可以使用SocketAddress的子类InetSocketAddress建立一个对象,

InetSocketAddress的构造方法如下:

PublicInetSocketAddress(InetAddressaddr,intport)

3.1功能描述

3详细设计说明

聊天程序分为服务器端和客户端两部分,服务端程序主要负责侦听客户端发来的消息,客户端需要登陆到服务器端才可以实现正常的聊天功能。

服务器:

1、在特定端口上进行侦听,等待客户端连接。

2、向已经连接到服务器端的用户发送系统消息。

3、当停止服务时,断开所有的用户连接。

4、系统运行稳定、安全可靠。

客户端:

1、连接到已经开启聊天服务的服务器端。

2、当服务器端开启后,用户可以发表聊天信息。

3、用户可以向所有人发送消息。

3.2主要功能详述

3.2.1客户建立连接到服务器的套接字对象

1、当套接字连接mysocket建立后,可以想象一条通信“线路”已经建立起来。

mysocket可以使用getInputStream()方法获得一个输入流,然后用这个输入流读取服务器放入“线路”的信息。

mysocket还可以使用getOutputStream()方法获得一个输出流,然后用这个输出流将信息写入“线路”。

2、在实际编写程序时,把mysocket使用getInputStream()方法获得的输入流接到另一个数据流上,然后就可以从这个数据流读取服务器来的信息,之所以这样是因为后面DataInputStream流有更好的从流中读取信息的方法。

3、同样把mysocket使用getOutputStream()方法得到的输出流接到另一个

DataOutputStream数据流上,然后向这个数据流写入信息,发送给服务器端,之所以这样做也是因为后面的DataOutputStream流有更好的向流中写入信息的方法。

3.2.2ServerSocket类

1、客户负责建立客户到服务器的套接字连接,即客户负责呼叫。

因此服务器必须建立一个等待接收客户的套接字的ServerSocket对象。

ServerSocket的构造方法如下:

ServerSocket(intport)

2、所谓接收客户的套接字连接就是accept()方法会返回一个和客户端Socket

对象相连接的Socket对象,服务器端的这个Socket对象sc使用

getOutputStream()方法获得的输出流将指向客户端Socket对象myscoket使用

getInputStream()方法获得的那个输入流;

同样,服务器端的这个Socket对象

sc使用使用的 getInputStream()方法获得的输入流将指向客户端Socket对象myscoket使用getOutputStream()方法获得的那个输出流。

3、连接建立以后,服务器端的套接字对象调用getInetAddress()方法可以获取一个InetAddress对象,该对象含有客户端的IP地址和域名。

同样,客户端的套接字对象调用getInetAddress()方法可以获取一个InetAddress对象,该对象含有服务器端的IP地址和域名。

双方通信完毕后,应使用close()方法关闭套接字连接。

3.2.3把套接字连接放在一个线程里

需要注意的是,从套接字连接中读取数据与从文件中读取数据有很大的不同。

尽管两者都是输入流,但从文件中读取数据时,所有的数据都已经在文件上了,而使用套接字连接时,可能在另一端数据发送出来之前,就已经开始试着读取了,这时,就会堵塞本线程,直到该读取方法成功读取信息,本线程才继续执行后续的操作。

因此,服务器端收到一个客户的套接字后,就应该启动专门为该客户服务的线程。

3.3主要代码分析

3.3.1使用套接字实现的主要方法

服务器为每个客户启动一个线程,在该线程中通过套接字和客户交流信息。

当向服务器发送一条聊天信息时,服务器要让所有的这些线程中的输出流写入信息,这样所有的客户的套接字的输入流就读取到了这一条信息。

如果想把信息送给特定的用户,服务器就让特定的线程中的输出流写入信息,那么只有特定的客户的套接字的输入流可以读取到这条信息。

3.3.2客户端

publicvoidactionPerformed(ActionEvente)

{if(e.getSource()==connection)//连接服务器

{ try

{if(socket.isConnected())

{}

else

{InetAddress

address=InetAddress.getByName("

127.0.0.1"

);

//传递域名InetSocketAddresssocketAddress=new

InetSocketAddress(address,666);

socket.connect(socketAddress);

in=newDataInputStream(socket.getInputStream());

out=new

DataOutputStream(socket.getOutputStream());

name=inputName.getText();

out.writeUTF("

姓名:

"

+name);

send.setEnabled(true);

if(!

(thread.isAlive()))

thread=newThread(this);

thread.start();

//启动线程,新建状态到就绪队列排队

catch(IOExceptionee){}

if(e.getSource()==send)//发送内容

{ Strings=inputContent.getText();

if(s!

=null)

{ try{out.writeUTF("

聊天内容:

+name+"

:

+s);

catch(IOExceptione1){}

publicvoidrun()//线程对象调度之后所执行的操作

{ Strings=null;

while(true)

{ try{ s=in.readUTF();

//读取服务器发来的消息,堵塞状态

chatResult.append

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

当前位置:首页 > 总结汇报 > 学习总结

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

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