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