《2022年2022年局域网广播系统》由会员分享,可在线阅读,更多相关《2022年2022年局域网广播系统(10页珍藏版)》请在金锄头文库上搜索。
1、石河子大学信息科学与技术学院计算机网络课程设计题目名称:局域网广播系统专业:计算机科学与技术班级:计算机科学与技术07 二学位学号: 200711 学生姓名:张健才2006092223 指导教师:随贤俊完成日期: 2009 年 9月 20日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 一、 程序的需求分析多点广播系统是一种, 可以将信息发送给那些等待接收信息的接受者。利用Java 的组播技术,设计一个广播系统,定时广播指定的
2、内容。这样的广播系统经过改进可以得到较广的发展,可用于一般的广播站、企业的通知、学校的广播等等。二、 程序的系统分析与功能模块设计说明系统分析( SA)是在对系统问题现状及目标充分挖掘的基础上,运用建模及预测、优化、仿真、评价等方法,对系统的有关方面进行定性与定量相结合的分析, 为决策者选择满意的系统方案提供决策依据的分析研究过程。 功能模块分析主要是真程序的使用程度,功能实现程度来进行评价。 该局域网广播系统主要功能如下,服务器端可以自由控制广播的时间和广播的内容,客户端主要是接受广播的内容但用户有权不接受广播。三、 程序的设计编码实现上的说明程序设计采用Java 语言编写,大体上分为服务端
3、和客户端两个部分分别由 BroadCastWord 、Receive 两个类实现。服务端设置组播监听端口为5000、设置组播的地址为239.255.0.0、多点广播套接字将通过 5000 端口进行广播、套接字加入组播group 后,本 socket发送的数据报可以被group 中的任何成员接收到。 而客户端设置组播的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 监听地址也为5000、组播的地址为239.255.0.0、客户端
4、的 socket 加入了 group 组,这时候只要服务端在指定端口有内容发送,所有客户端都可以监听到, 此时通过多线程的运用可以减少各客户端、各端口的相互干扰。四、 程序的源码清单及其运行演示import java.awt.* ; import java.io.*; import .*; import java.awt.Component; import java.awt.event.*; import javax.swing.*; public class BroadCastWord extends Frame implements ActionListener int port; Ine
5、tAddress group=null; MulticastSocket socket=null; Timer time=null; FileDialog open=null; Button select,开始广播 ,停止广播 ; File file=null; String FileDir=null,fileName=null; FileReader in=null; BufferedReader bufferIn=null; int token=0; TextArea 显示正在播放内容,显示已播放的内容; public BroadCastWord() super( 单词广播系统); sel
6、ect=new Button(选择要广播的文件); 开始广播 =new Button( 开始广播 ); 开始广播 .setEnabled(false); 停止广播 =new Button( 停止广播 ); select.addActionListener(this); 开始广播 .addActionListener(this); 停止广播 .addActionListener(this); time=new Timer(2000,this); open=new FileDialog(this, 选择要广播的文件,FileDialog.LOAD); 显示正在播放内容=new TextArea(1
7、0,10); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 显示正在播放内容.setForeground(Color.blue); 显示已播放的内容=new TextArea(10,10); Panel north=new Panel(); north.add(select); north.add(开始广播 ); north.add(停止广播 ); add(north,BorderLayout.NORTH); Panel c
8、enter=new Panel(); center.setLayout(new GridLayout(1,2); center.add(显示正在播放内容); center.add(显示已播放的内容); add(center,BorderLayout.CENTER); validate(); try port=5000; group=InetAddress.getByName(239.255.0.0); socket=new MulticastSocket(port); socket.setTimeToLive(1); socket.joinGroup(group); catch(Excepti
9、on e) System.out.println(Error:+ e); setBounds(100,50,360,380); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) if(e.getSource()=select) 显示已播放的内容.setText(null); open.setVisible(true); fileN
10、ame=open.getFile(); FileDir=open.getDirectory(); if(fileName!=null) time.stop(); file=new File(FileDir,fileName); try 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - file=new File(FileDir,fileName); in=new FileReader(file); bufferIn=new Bu
11、fferedReader(in); 开始广播 .setEnabled(true); catch(IOException ee) else if (e.getSource()=开始广播 ) time.start(); else if (e.getSource()=time) String s=null; try if(token=-1) file=new File(FileDir,fileName); in = new FileReader(file); bufferIn=new BufferedReader(in); s=bufferIn.readLine(); if(s!=null) tok
12、en=0; 显示正在播放内容.setText(正在播放的内容:n+s); 显示已播放的内容.append(s+n); DatagramPacket packet=null; byte data=s.getBytes(); packet=new DatagramPacket(data,data.length,group,port); socket.send(packet); else token=-1; catch(IOException ee) else if(e.getSource()=停止广播 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
13、 - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - time.stop(); public static void main(String args) BroadCastWord broad=new BroadCastWord(); import .*; import java.awt.*; import java.awt.event.*; public class Receive extends Frame implements Runnable,ActionListener int port; InetAddress
14、 group=null; MulticastSocket socket=null; Button 开始接收 ,停止接收 ; TextArea 显示正在接收内容,显示已接收的内容; Thread thread; boolean 停止 =false; public Receive() super(定时接收信息); thread=new Thread(this); 开始接收 =new Button( 开始接收 ); 停止接收 =new Button( 停止接收 ); 停止接收 .addActionListener(this); 开始接收 .addActionListener(this); 显示正在接
15、收内容=new TextArea(10,10); 显示正在接收内容.setForeground(Color.blue); 显示已接收的内容=new TextArea(10,10); Panel north=new Panel(); north.add(开始接收 ); north.add(停止接收 ); add(north,BorderLayout.NORTH); Panel center=new Panel(); center.setLayout(new GridLayout(1,2); center.add(显示正在接收内容); center.add(显示已接收的内容); add(cente
16、r,BorderLayout.CENTER); validate(); port=5000; try group=InetAddress.getByName(239.255.0.0); socket=new MulticastSocket(port); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - socket.joinGroup(group); catch(Exception e) setBounds(100,50,360
17、,380); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) if (e.getSource()=开始接收 ) 开始接收 .setBackground(Color.blue); 停止接收 .setBackground(Color.gray); if(!(thread.isAlive() thread=new Thread(thi
18、s); try thread.start(); 停止 =false; catch(Exception ee) if(e.getSource()=停止接收 ) 开始接收 .setBackground(Color.gray); 停止接收 .setBackground(Color.blue); thread.interrupt(); 停止 =true; public void run() while(true) byte data=new byte8192; DatagramPacket packet=null; packet=new DatagramPacket(data,data.length,
19、group,port); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - try socket.receive(packet); String message=new String(packet.getData(),0,packet.getLength(); 显示正在接收内容.setText(正在接收的内容:n+message); 显示已接收的内容.append(message+n); catch(Exception e) i
20、f(停止 =true) break; public static void main(String arg) new Receive(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 五、 实现方案的分析比较说明方案采用了 DatagramPacket 通信,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到
21、达。不对包投递做出保证。服务端口通名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 过 send 发送数据,客户端端口通过receive接收数据来实现接收,双方的数据是面向无连接的, 这种方式叫其他的通信方式简单,减少了中间过程。六、 不足之处和改进之处,前景展望或心得体会等不足之处, 程序功能过于简单, 服务器断自能对客户端方式文本文件,没有的广播,不能进行歌曲、电影方面的播放,同时客户端没有自主权而只能收看服务端正在播放的内
22、容。该进之处,可以增加代码来开发更多的功能满足用户的需要,开辟用户的点播数据库、 根据用户不同的等级限制用户的使用范围、提供用户间的交流工具如聊天视频方面,提供文字、图片、歌曲、电影方面的服务来满足跟多的人群的需求。通过课程设计可以更好学习计算机网络编程、对于这样一门实用性的课程, 只有多练习才有提高, 课程设计让我深深的体会到了这一点,当然通过课程设计还可以学习到教材上没有的一些内容,总之,通过这次课程设计让我受益匪浅!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -