一个基于UDP数据广播的局域网络会议程(下)

BroadcastGroup是数据广播组标示符(波段),

//ClientPort是数据广播目标端口(频率)。

packet=newDatagramPacket(b,b.length,BroadcastGroup,ClientPort);

//发送数据包

Sender.send(packet);

}catch(Exceptione){}

}

//数据接收方法

publicStringReceiveData()

{

byte[]b=newbyte[1024];

//构造一个空的数据包

DatagramPacketpacket=newDatagramPacket(b,1024);

StringInMsg;

try

{

//接收数据

Receiver.receive(packet);

}catch(IOExceptione){}

//丛数据包中获得接收到的数据

b=packet.getData();

InMsg=newString(b);

returnInMsg;

}

数据接收线程Receiver.java的任务是接收广播数据并更新图形用户界面。该类的构造函数包括两个参数,参数listener指定用来接收数据的Broadcast对象,参数display则指定用来显示会议内容的TextArea对象。在其运行方法run中,循环调用Broadcast对象的数据接收方法ReceiveData接收广播数据,并且利用TextArea对象的append方法将新接收到的内容显示到图形用户界面上。

publicclassReceiverextendsThread

{

BroadcastListener;

TextAreaDisplay;

StringInMsg;

//构造方法

publicReceiver(Broadcastlistener,TextAreadisplay)

{

//Listener是一个数据发送与接收对象,用来接收数据。

Listener=listener;

/Display是一个TextArea对象,用来显示会议内容。

Display=display;

}

//运行方法

publicvoidrun()

{

while(true)

{

//接收广播数据

InMsg=Listener.ReceiveData();

//更新图形用户界面

Display.append(InMsg);

Display.append("\n");

}

}

}

图形用户界面chat.java是基于Java抽象窗口工具包AWT构建的。该界面包括一个用来显示会议内容TextArea,一个用来接收用户输入的TextField,以及一个数据发送命令按钮。在Chat的构造方法中,我们首先创建图形界面,构造一个数据发送与接收对象和一个数据接收线程,然后启动该线程开始接收会议信息。在这个方法中,我们还利用InetAddress.getLocalHost()方法来获得用户的机器名,这个标示符被用来作为用户在网络会议中的用户名。

//构造方法

publicChat()

{

//创建图形界面

add(CreateGui());

//....

//其它操作

//....

//构造一个数据发送与接收对象

Device=newBroadcast();

//构造一个数据接收线程

ReceiverRecv=newReceiver(Device,InMsg);

Recv.start();

}

程序测试

利用JDK1.3编译以上所有源代码:

javac*.java

启动网络会议程序:

javaChat

本示例程序在一个包括Windows98,Windows2000,RedHatLinux6.1/7.0,MacOS,SunSolaris等多种操作系统的局域网络中通过测试。

结论

本文介绍了网络通讯中通用的传输控制协议(TCP)和用户数据包协议(UDP),并且利用Java语言设计了一个简单的基于UDP数据广播的局域网络会议程序,展示了在Java语言中进行UDP数据发送和接收的一般步骤。本示例程序说明利用UDP数据广播能够轻易实现局域网络会议的一般功能。由于Java语言卓越的跨平台特性,一个基于Java的局域网络会议系统够不加修改的运行在一系列不同平台上。

来源:赛迪网技术社区


微信扫描分享本文到朋友圈
扫码关注5G通信官方公众号,免费领取以下5G精品资料

本周热点本月热点

 

  最热通信招聘

  最新招聘信息

最新技术文章

最新论坛贴子