局域网广播系统.docx

上传人:b****5 文档编号:8565482 上传时间:2023-01-31 格式:DOCX 页数:11 大小:130.99KB
下载 相关 举报
局域网广播系统.docx_第1页
第1页 / 共11页
局域网广播系统.docx_第2页
第2页 / 共11页
局域网广播系统.docx_第3页
第3页 / 共11页
局域网广播系统.docx_第4页
第4页 / 共11页
局域网广播系统.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

局域网广播系统.docx

《局域网广播系统.docx》由会员分享,可在线阅读,更多相关《局域网广播系统.docx(11页珍藏版)》请在冰豆网上搜索。

局域网广播系统.docx

局域网广播系统

XX学院计算机科学与技术系

实验报告

课程名称

程序设计基础实验

(2)

实验项目

应用系统的面向对象设计与分析

实验类型

综合性实验

完成人

所在班级

指导教师

完成日期

2009年11月29日

实验报告正文

一.实验报告简表

实验课题名称

局域网广播

综合性实验项目

应用系统的面向对象设计与分析

服务课程

程序设计基础实验

(2)

实验小组组长

指导教师

参与实验人员及其在实验课题中承担的主要任务(包括组长)

学号

小组成员姓名

班级

在实验课题中的主要作用

二.设计内容与要求

1、多点广播是一种新的技术,可以把信息发送给等待接受的接受者,利用Java的Socket通信技术,设计一个网络广播系统,可以随时发送服务器的内容。

2、客户端运行相应的客户端程序,连接服务器就可以接受到服务器的广播的信息,客户端可以随时开始或停止接受广播。

三.总体设计,包括需求分析、功能描述、设计工具与运行环境、类及类间关系描述等

TCP/UDP编程比较简单、功能强大,深受喜爱,基于TCP/UDP的通信在Internet网中广泛应用。

其特点:

TCP是面向连接的可靠的协议,适用于传输大批量的文件,检查是否正常传输;UDP是面向非连接的不可靠的协议,适用于传输一次性小批量的文件,不对传输数据报进行检查;TCP需要先建立连接才能通话;UDP不需要,实时性比较高。

“英语在线学习”利用“局域网广播”的原理,TCP的socket编程实现客户端和服务器的连接通信,其实现功能如下:

1、客户端:

可以实现服务器在线,客户端时时连接,连接的客户端就可以接受服务器发送的信息,客户端也可随时关闭其连接。

2、服务器端:

时时监控客户端的连接,可连接多个客户端,并显示连接的客户端的Ip地址。

输入要发送客户端的信息,比如“English英语”,点击“发送”按钮,连接的所有客户端都能接受同样的信息。

设计工具:

eclipse(Release3.5.1)和JDK6.0

运行环境:

WindowsXP

类及类间关系

服务器端:

Frame类

Thread类

ServerThread类

主类Server类

 

Server类包含main()函数,完成窗口的创建和显示,以及信息的发送ServerThread完成客户端的连接请求。

客户端:

 

Frame类

Thread类

 

FrameOut类

connectedMsg类

 

主类Client

Client是主类调用FrameOut完成窗口的创建、显示,connectedMsg是个子线程,负责连接服务器。

四.详细设计,包括类图及代码等

服务器端

Server类

Frame类

1、“Server”类继承“Frame”类,实现窗口的创建和显示,并监听各组件的动作,同时开启多线程,ServerThread类的线程。

 

 

监听“closebtn按钮”,退出系统,并释放所有的资源。

if(e.getSource().equals(closeButton))

{

dispose();

System.exit(0);//退出系统

}

2、监听“sendButton”按钮,“sendButton”按钮有动作发生时,取得文本框的内容。

有客户连接时,把信息发送给客户端,否则显示“没有客户”

if(e.getSource().equals(sendButton))//如果是发送按钮,执行下面

{

Stringmessage=sendMsg.getText();//获得要发送的信息

if(socketVe.size()==0)//判断socketVe是否为空

{

connectIP.setText("没有客户连接");//

}

else

{

for(intn=0;n

{

Socketsocket=socketVe.get(n);

try{

DataOutputStreamsOut=newDataOutputStream(socket

.getOutputStream());//创建输出流

sOut.writeUTF(message);//发送消息

sOut.flush();

}catch(IOExceptione1){}//

}

}

}

因为在加入的客户端的个数无法确定,所以必须设计一个不定的Vector数组才最合适,既不会浪也不出现设计的太小而无法满足客户的连接

publicVectorsocketVe=newVector();//Socket的管理器

2、“ServerThread类”继承于Thread,在main()的中开启线程,时刻监听客户端的请求连接,加入自己的Verctor(Socket)中,以便发送。

Thread类

ServerThread类

 

publicvoidrun()

{

try{

serverSocket=newServerSocket(5600);//在5600端口监听客户端

}catch(IOExceptione1){

e1.printStackTrace();

}

while(true)

{

try{

Socketconnected=serverSocket.accept();//接受客户端的连接请求

server.socketVe.add(connected);//加入管理器

server.connectIP.append(connected.getInetAddress().toString()+"\n");

//在窗口中显示

}catch(IOExceptione){}//连接的异常抛出

}

}

因为Socket.accept();会是阻塞式的,如果想接受多个客户端的请求,单独的设计一个线程比较方便管理,而且不会阻塞进程而不影响其他组件的使用。

客户端

Frame类

1、“client类”是主类,创建“FrameOut类”,“FrameOut类”继承“Frame类”实现窗口的创建和显示。

 

Client类

FrameOut类

 

在创建窗口时,对各按钮的合理摆放不仅方便各种操作,而且更给人一个美的感觉。

所以,个组件的定位非常重要。

先定义一个空的布局方式,加入一个容器,把各组件加入容器中,组件这时具有一个setBounds()方法,可以方便的其在窗口中的位置。

如:

staticTextArearecivedMsg;

recivedMsg=newTextArea(10,30);//文本区域

recivedMsg.setBounds(50,50,350,320);//设置欢迎标签的大小和位置

panl.add(recivedMsg);

2、

 

五.实例运行及应用效果

1.服务器端界面,输入内容后点击发送即可向所有已经连接的客户端发送数据消息.

2.客户端界面,输入IP地址点击连接后即可与服务器端进行连接,连接完成后可以与服务器端进行消息交流.

3.连接界面

4.连接完成

5.发送消息

六.体会与总结,包括对所用知识点和关键方法的综合认识

本次实验的“英语在线学习系统”就是简单的Socket编程的应用。

实现多个客户端和服务器的连接通信,服务器等待客户端的连接,客户端则时时可以连接服务器接受其消息。

在实现过程中,用Java的application的编写良好的界面,更好的服务于使用者。

在界面的创建过程中用到了容器,标签,按钮,文本框和文本域等各组件。

本实验使用了空布局,在其中加入容器,可以方便的定位各个组件在窗口中的位置,使界面更加美观。

本次实验运用了TCP/DCP中的连接通信的TCP协议,Socket编程是实现通信的关键。

实现多个用户的连接时,使用了泛型编程,设置一个“管理器”,可以方便的把各个客户端的Socket加入其中,用其他方法实现就比较麻烦操作。

在设计多个客户连接服务器时由于socket在使用其方法是阻塞式的,则服务器要接受多个客户端的连接,必须是时时监听客户端的连接,则此时接到一个客户端的连接时会进入下一个等待客户端的连接,直到有客户的连接才会取消其阻塞状态。

如果不单独的分配一个线程的话就会出现影响其他线程的阻塞使其他功能无法实现。

所以,实验中多线程也是一个重要的内容。

还有,在客户端要求连接服务器时,要求输入服务器的IP地址,客户端服务程序会自动检验客户的输入是否IP格式的符合要求,这时有要用到JAVA的正则表达式。

总的来说,本次实验,锻炼了我们合理规划设计类的能力,application的界面编程的各个内容,以及网络TCP协议的socket编程,多线程,正则表达式和简单泛型等方面的JAVA编程。

正在开发中,经常的交流沟通,让我们体验了团队协作的编程。

最重要的是我们在开发中学会了使用课本的知识应用于实践,可以让我们有团队开发的经验和使用JAVA的能力都有了提高。

杨玉雪,张娟,朱海清,耿辉,颜彬彬

2009年12月1号

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

当前位置:首页 > 初中教育

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

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