基于局域网的消息广播系统的设计与实现

更新时间:2023-07-25 23:50:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

长沙理工大学

《计算机网络》课程设计报告

学 院 计算机与通信工程 专 业 班 级 学 号 学生姓名 指导教师 课程成绩 完成日期

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

学 院 计算机与通信工程 专 业 通信工程 班 级 学 号 学生姓名 指导教师 完成日期

指导教师对学生在课程设计中的评价

指导教师对课程设计的评定意见

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

课程设计任务书

学院 专业

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

基于局域网的消息广播系统的

设计与实现

学生姓名: 指导老师:

摘 要 本课程设计主要基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

关键词 课程设计;UDP协议;套节字;Eclipse编程环境; C/S工作模式

1引言

局域网广播系统是典型的企业信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。基于JAVA的局域网广播系统介绍了如何使用组播(多点广播)这种相当新的技术以实现C/S模式的广播,以及基于UDP(用户数据报协议)的传输方式是怎样进行数据传输的,它的速度、安全性以及与基于TCP的通信有何不同。

1.1课程设计目的

综合运用我们所学过的知识,以达到巩固所学知识,提高我们思考问题、分析问题和解决问题能力的目的。学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。

进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。

通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。

1.2课程设计要求

通过对基于局域网的消息广播系统的设计,熟悉UDP协议以及套节字编程原理;性能,熟悉Eclipse编程环境及Socket/ServerSocket编程方法,理解C/S工作模式。按要

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

求编写课程设计报告书,培养一定的自学能力和独立分析问题、解决问题的能力。包括学会自己分析解决问题的方法,对设计中遇到的问题,能通过独立思考、查阅工具书、参考文献,寻找解决方案。

1.3编程环境

Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。 Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。 已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。

2 需求分析

2.1开发背景

广播系统具有实用性、经济性、便捷性等特点,广泛应用于各种公共场合,如进行全校的公共广播、课间操、召开全校大会等。利用传统广播的概念,将其与网络连接起来,即可实现网络资源共享,典型的例子如:网络教学。

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络, 基于JAVA的局域网广播系统能更方便的在局域网中传递信息,因此产生了制作一个局域网的广播系统;而且通过制作该程序还能更好的学习网络软件编程知识.

2.2功能要求

实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

3 相关协议及原理

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

3.1 UDP协议

用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。是一个简单的面向数据报的传输层协议,IETF RFC 768是UDP的正式规范。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分别运行在同一台设备上的多个应用程序。

由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 UDP 的“端口号”完成的。例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP 头插入目标端口号 53 。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。 UDP 端口的详细介绍可以参照相关文章。

3.2客户机/服务器模式

在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:

首先服务器方要先启动,并根据请示提供相应服务:(过程如下) 1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。

2、等待客户请求到达该端口。

3、接收到重复服务请求,处理该请求并发送应答信号。 4、返回第二步,等待另一客户请求 5、关闭服务器。 客户方:

1、打开一通信通道,并连接到服务器所在主机的特定端口。

2、向服务器发送服务请求报文,等待并接收应答;继续提出请求…… 3、请求结束后关闭通信通道并终止。

3.3基本套接字

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

1、创建套接字——socket()

功能:使用前创建一个新的套接字

格式:SOCKET PASCAL FAR socket(int af,int type,int procotol); 参数:af: 通信发生的区域 type: 要建立的套接字类型 procotol: 使用的特定协议 2、指定本地地址——bind()

功能:将套接字地址与所创建的套接字号联系起来。

格式:int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);

参数:s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。

其它:没有错误,bind()返回0,否则SOCKET_ERROR 地址结构说明: struct sockaddr_in {

short sin_family;//AF_INET

u_short sin_port;//16位端口号,网络字节顺序 struct in_addr sin_addr;//32位IP地址,网络字节顺序 char sin_zero[8];//保留 }

3、建立套接字连接——connect()和accept()

功能:共同完成连接工作

格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);

SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen); 参数:同上

4、监听连接——listen()

功能:用于面向连接服务器,表明它愿意接收连接。

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

5、数据传输——send()与recv()

功能:数据的发送与接收

格式:int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);

int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags); 参数:buf:指向存有传输数据的缓冲区的指针。 6、多路复用——select()

功能:用来检测一个或多个套接字状态。

格式:int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds,

fd_set FAR * exceptfds,const struct timeval FAR * timeout); 参数:readfds:指向要做读检测的指针 writefds:指向要做写检测的指针 exceptfds:指向要检测是否出错的指针 timeout:最大等待时间 7、关闭套接字——closesocket()

功能:关闭套接字s

格式:BOOL PASCAL FAR closesocket(SOCKET s);

4 系统设计

4.1 设计思想

整个系统分为广播发送端和接收端,发送端发送数据信息到多播组。接受端可以选择接收与不接收,服务器端是信息的中心。

服务器端可以打开指定的文件,通过定时器不断发送信息,同时可以自己显示正在发送和已发送的信息。客户端则可以选择接收和停止接收,同时显示接收到的内容。

本课程设计按照系统的具体功能要求,首先应用Socket编程创建客户端和服务器端,每个接收端就会相应的创建一个线程,它们之间通过这个连接来实现数据通信;然后在发送端和接收端设置一个监听器,用于监听发出的消息。并根据消息做出不同的动作。

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

4.2系统功能

该系统实现了局域网内部的信息广播,,同一子网掩码下的用户都可以接收并查看 发送端发送的信息。发送端可以开始发送和停止发送,接收端也可以接收和停止接收,两端都可以显示发送的信息。

4.3系统架构

(1)选择用户数据报协议UDP,使用Java的Socket编程机制,分别建立发送端与接收端,自己可以设定主机的地址。

(2)分别设计发送端与接收器端的界面,并使用Java应用程序用户界面的开发工具包Swing进行窗体界面的布局,以及实现部分窗口事件的相应。

4.4 模块设计

(1) 广播发送端:

主要实现向各个接收端发布广播消息。 1、选择要发送的文件:

可以选择路径。

2、发送信息:运用MulticastSocket多播数据报套接字类用于发送和接收 IP 多播包。设置Timer计时器在指定时间间隔触发一个或多个 ActionEvent。

3、显示消息:显示发送的内容和已发送的内容。主要用BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流用来每次显示一行正发送的内容。显示已发送的内容则要使用append(String str) 将给定文本追加到文本区的当前文本。 (2) 客户端:

主要实现接收发送端发送的消息,和发送端一样可以显示已接收的信息内容。和接

受端得一个重要的区别在于它不需要打开一个文件,代码要简单一点。

5详细设计与实现

5.1 服务器端

(1)这部分代码包含的包有:

import java.io.*;

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

import java.awt.event.*; import javax.swing.Timer; (2)界面设计

该段功能由ServerFrame.java文件中的ServerFrame类实现,具体实现过程如下: 窗口布局:服务器端窗口使用了BorderLayout事务管理器,把整个容器分成了几个区域,每个面板又分别使用不同的事务管理器放置其他组件,如按钮、标签、文本框等,各个组将构成了一个完整的服务器端界面。

下面图5-1是发送端初始化界面的截图:

图5-1发送端初始化界面

(3)事件处理:

通过Java的授权事件模型,针对组件“选择要广播的文件”、“开始广播”“停止广播”Button1~Button8,通过addActionListener(主要运用了addActionListener)方法注册监听器,并且实现ActionListener接口中的actionPerformed方法,这样,当组件触发了相应类型的事件后,此事件就会被传送给已注册的监听器,事件监听器负责处理事件。至此,实现了窗口对以下几个事件的响应:打开文件,开始发送信息、停止发送信息。

5.2 服务器端

(1)这部分代码包含的包只有三个:

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

import java.awt.event.*; (2)界面设计

这部分的和发送端的原理一样,所以只给出代码如下:

public Receive() {

super("定时接收信息"); thread = new Thread(this);

开始接收 = new Button("开始接收"); 停止接收 = 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 GridLayout(1, 2)); center.add(显示正在接收内容); center.add(显示已接收的内容); add(center, BorderLayout.CENTER); validate();

Button 开始接收, 停止接收;

TextArea 显示正在接收内容, 显示已接收的内容; Thread thread; boolean 停止 = false;

下面图5-2是接收端初始化界面的截图:

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

图5-2接收端初始化界面

(3)事件处理部分主要代码

while (true) {

byte data[] = new byte[8192]; DatagramPacket packet = null;

packet = new DatagramPacket(data, data.length, group, port); 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;}

从这段代码中可以看出接收端的这部分代码和发送端的区别主要就在于把socket.send(packet);改为socket.receive(packet);

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

5.3核心类

(1)类 MulticastSocket:

多播数据报套接字类用于发送和接收 IP 多播包。MulticastSocket 是一种 (UDP) DatagramSocket,它具有加入 Internet 上其他多播主机的“组”的附加功能。

多播组通过 D 类 IP 地址和标准 UDP 端口号指定。D 类 IP 地址在 224.0.0.0 和 239.255.255.255 的范围内(包括两者)。地址 224.0.0.0 被保留,不应使用。

可以通过首先使用所需端口创建 MulticastSocket,然后调用 joinGroup(InetAddress groupAddr) 方法来加入多播组:

将消息发送到多播组时,该主机和端口的所有预定接收者都将接收到消息(在数据包的生存时间范围内,请参阅下文)。套接字不必成为多播组的成员即可向其发送消息。

当套接字预定多播组/端口时,它将接收由该组/端口的其他主机发送的数据报,像该组和端口的所有其他成员一样。套接字通过 leaveGroup(InetAddress addr) 方法放弃组中的成员资格。多个 MulticastSocket 可以同时预定多播组和端口,并且都会接收到组数据报。

同时,不允许 applet 使用多播套接字。 (2)类 Frame:

Frame 是带有标题和边框的顶层窗口。

窗体的大小包括为边框指定的所有区域。边框区域的尺寸可以使用 getInsets 方法获得,但是,由于这些尺寸与平台相关,因此在通过调用 pack 或 show 将窗体设置为可显示之前,将无法获得有效的 insets 值。由于窗体的总大小包括了边框区,因此边框实际上遮掩了窗体的部分区域,并将可用于在矩形中呈现和/或显示子部件的区域限制在一个矩形内,该矩形左上角的位置为 (insets.left, insets.top),宽度为 width - (insets.left + insets.right),长度为 height - (insets.top + insets.bottom)。

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

(3)类 Thread

线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。

当 Java 虚拟机启动时,通常都会有单个非守护线程(它通常会调用某个指定类的 main 方法)。Java 虚拟机会继续执行线程,直到下列任一情况出现时为止。

调用了 Runtime 类的 exit 方法,并且安全管理器允许退出操作发生。 非守护线程的所有线程都已停止运行,无论是通过从对 run 方法的调用中返回,还是通过抛出一个传播到 run 方法之外的异常。

创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。

创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。

每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。

5.4 所设计的广播系统工作效果截图

运行BroadCastWord.java后,点击“选择要广播的文件”按钮时出现的对话框如图5-3:

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

图5-3选择文件路径

选择一txt文档,点击“开始广播”一段时间后的截图如图5-4:

图5-4 点击“开始广播”

然后点击“停止广播”时的截图如图5-5:

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

图5-5 点击“停止广播”

在运行BroadCastWord.java后,同时运行Receive.java,点击“开始接收”按钮时的截图如图5-6:

图5-6 点击“开始接收”

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

然后点击接收端“停止广播”时的截图如图5-7:

图5-7 点击“停止广播”

6 结束语

经过努力,我终于将课程设计做完了。在这次作业过程中,我遇到了许多困难,但在老师,同学的帮助和我的努力下,我顺利的完成了设计。这个程序代码并不多,也不复杂,但程序编写中用到了JAVA中的Swing组件,面板容器,事件处理,线程的创建、同步,输入输出处理,内部类,异常处理,和网络通信的知识,这次的课程设计让我受益非浅。设计过程中对程序整体的认知不够准确,只能想到一部分功能而不能满足整体的要求。通过查询参考书和向同学请教,最后终于搞明白了。

在整个设计过程中,对我来说,收获最大的是方法和能力,那些分析和解决问题的方法与能力。在整个过程中,我发现我的理论知识和实际应用脱节。总体来说,我觉得做这种设计对我的帮助还是很大的,它需要我们将学过的相关知识都系统地联系起来,对学过的理论进行深入的理解,这就为我们以后进行相关的工作打下了基础。

参考文献

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

[1] 孙卫琴编JAVA网络程序精解 电子工业出版社

[2] 孙印杰 刘斌 孙玉强等编JAVA编程案例精解 电子工业出版社

[3] Merlin Hughes Michael Shoffner《Java网络编程实例》清华大学出版社

[4] 李芝兴、杨瑞龙、朱庆生《Java程序设计之网络编程》清华大学出版社 2006年3月第一版

课程设计附件: //1、广播发送端

import java.io.*;//通过数据流、序列化和文件系统提供系统输入和输出。 import .*;//为实现网络应用程序提供类。

import java.awt.*;//包含用于创建用户界面和绘制图形图像的所有类。

import java.awt.event.*;//提供处理由 AWT 组件所激发的各类事件的接口和类。 import javax.swing.Timer;//计时器

public class BroadCastWord extends Frame implements ActionListener { // Actionlisener 监听器

int port; //Frame 是带有标题和边框的顶层窗口 InetAddress group = null;//此类表示互联网协议 (IP) 地址。

MulticastSocket socket = null;//MulticastSocket播数据报套接字类用于发送和接收 IP

多播包。

Timer time = null;//Timer计时器在指定时间间隔触发一个或多个 ActionEvent。 FileDialog open = null;//FileDialog 类显示一个对话框窗口,用户可以从中选择文件。 Button select, 开始广播, 停止广播;//Button此类创建一个标签按钮。当按下该按钮

时,应用程序能执行某项动作。

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

File file = null;//文件和目录路径名的抽象表示形式。 String FileDir = null, fileName = null;

FileReader in = null;//FileReader用来读取字符文件的便捷类。

BufferedReader bufferIn = null;//BufferedReader从字符输入流中读取文本,缓冲各个

字符,从而实现字符、数组和行的高效读取。

int token = 0;

TextArea 显示正在播放内容, 显示已播放的内容;//TextArea 对象是显示文本的多行

区域。可以将它设置为允许编辑或只读。

public BroadCastWord() {

super("单词广播系统");

select = new Button("选择要广播的文件"); 开始广播 = new Button("开始广播");

开始广播.setEnabled(false);//setEnabled()根据参数 的值启用或禁用此组件。 停止广播 = new Button("停止广播");

select.addActionListener(this);// 添加指定的动作侦听器,以接收发自此按钮的动

作事件。

开始广播.addActionListener(this); 停止广播.addActionListener(this); time = new Timer(2000, this);

open = new FileDialog(this, "选择要广播的文件", FileDialog.LOAD);

//FileDialog 类显示一个对话框窗口,用户可以从中选择文件。

显示正在播放内容 = new TextArea(10, 10);

//构造一个新文本区,该文本区具有指定的行数和列数,并将空字符串作为文本。

显示正在播放内容.setForeground(Color.pink);//设置组件的前景色为粉红色。 显示已播放的内容 = new TextArea(10, 10);

Panel north = new Panel();//Panel 是最简单的容器类。应用程序可以将其他组件

放在面板提供的空间内,这些组件包括其他面板。 north.add(select);//add将指定组件追加到此容器的尾部 north.add(开始广播); north.add(停止广播);

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

center.setLayout(new GridLayout(1, 2));//setLayout设置此容器的布局管理器。 center.add(显示正在播放内容); center.add(显示已播放的内容); add(center, BorderLayout.CENTER); validate();//验证此容器及其所有子组件。 try {

port = 5000;

group = InetAddress.getByName("239.255.0.0");//InetAddress.getByName在给

定主机名的情况下确定主机的 IP 地址。

socket = new MulticastSocket(port);//MulticastSocket(int port)

// 创建多播套接字并将其绑定到特定端口。

socket.setTimeToLive(1);//setTimeToLive(int ttl)

//设置在此 MulticastSocket 上发出的多播

数据包的默认生存时间,以便控制多播的范围。

socket.joinGroup(group);//joinGroup(InetAddress mcastaddr)

// 加入多播组

} catch (Exception e) { }

setBounds(100, 50, 360, 380);

// 移动组件并调整其大小。

System.out.println("Error: " + e);

setVisible(true);//setVisible(boolean b) //根据参数 b 的值显示或隐藏此组件。 select.setBackground(Color.pink);//设置背景色

addWindowListener(new WindowAdapter() {

//添加指定的窗口侦听器,以从此窗口接收窗口事件。 }

});

public void windowClosing(WindowEvent e) { }

System.exit(0);

基于Eclipse编程环境,实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看。

if (e.getSource() == select) {//getSource()

// 最初发生 Event 的对象。

显示已播放的内容.setText(null);//setText(String t)

//将此文本组件显示的文本设置为指定文本。

open.setVisible(true); //根据参数 b 的值显示或隐藏此组件。 fileName = open.getFile();//getFile()

// 获取此文件对话框的选定文件。

FileDir = open.getDirectory(); // 获取此文件对话框的目录。 if (fileName != null) {

time.stop();

file = new File(FileDir, fileName);

// 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

try {

file = new File(FileDir, fileName);

in = new FileReader(file);//FileReader用来读取字符文件的便捷类。 bufferIn = new BufferedReader(in);//BufferedReader(Reader 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);

// 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

本文来源:https://www.bwwdw.com/article/kvem.html

Top