欢迎来到天天文库
浏览记录
ID:41335031
大小:357.18 KB
页数:9页
时间:2019-08-22
《Java基于UDP的多点广播数据报源码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、多点广播原理:若要使用多点广播时,则需要让一个数据报标有一组目标主机地址,当数据报发出后,整个组的所有主机都能收到该数据报。IP多点广播(或多点发送)实现了将单一信息发送到多个接收者的广播,其思想是设置一组特殊网络地址作为多点广播地址,每一个多点广播地址都被看做一个组,当客户端需要发送、接收广播信息时,加入到该组即可。定义Weather类packagecom.han;importjava.net.*;publicclassWeatherextendsThread{Stringweather="节目预告:八点有大型晚会,请收听";intport=
2、9898;//定义端口号InetAddressiaddress;//没法初始化,这里只能声明。因为初始化new对象时要抛出异常所以在成员变量区域是语法通不过的。MulticastSocketsocket;//DatagramSocket只允许数据报发送给指定的目标地址,而MulticastSocket可以将数据报以广播方式发送到数量不等的多个客户端。//在构造方法中初始化成员变量Weather(){try{iaddress=InetAddress.getByName("233.0.0.0");//初始ipsocket=newMulticastS
3、ocket(port);//根据端口号创建广播socketsocket.setTimeToLive(1);//设置socket生存周期socket.joinGroup(iaddress);//将该地址加入广播地址组}catch(Exceptione){e.printStackTrace();}}@Override//最简单的方法也就是建立一个线程来运行publicvoidrun(){while(true){byte[]data=weather.getBytes();//获取weather字节流//构造数据报包,用来将长度为 length 偏移量
4、为 offset 的包发送到指定主机上的指定端口号。length 参数必须小于等于data.length。DatagramPacketpacket=newDatagramPacket(data,data.length,iaddress,port);System.out.println(newString(data));try{socket.send(packet);//发送数据包sleep(3000);//线程休眠3秒}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTra
5、ce();}}}publicstaticvoidmain(String[]args){Weatherw=newWeather();w.start();}}定义Receive类[java]packagecom.han;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.event.*;importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.InetAddress;importjava.n
6、et.MulticastSocket;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;publicclassReceiveextendsJFrameimplementsRunnable,ActionListener{privatestaticfinallongserialVersionUID=336237794750347410
7、2L;intport=9898;//指定端口号InetAddressgroup;//初始多播地址组MulticastSocketsocket;//创建socket接收和发送数据包DatagramPacketpacket;//定义数据包JButtonince=newJButton("开始接收");//接收按钮JButtonstop=newJButton("停止接收");//停止按钮JTextAreainceAr=newJTextArea(10,20);JTextAreainced=newJTextArea(10,20);Threadthread;
8、/创建新线程booleanb=false;byte[]buf=newbyte[30];.//在构造方法中设置具体参数特性,也就是初始化publicRe
此文档下载收益归作者所有