java 实现局域网多播
2015-07-09 18:03
369 查看
要想用java编程实现发送多播信息,需要经历几个基本的编程步骤。能完成以下这几步,就是可以用Java程序来实现多播信息的
发送。
(1)确定发送消息的具体内容;
String msg="hello";
(2)选用专门为多播指定的D类IP地址(224.0.0.1到239.255.255.255),创建一个多播组
InetAddress group=InetAdress.getByName(228.5.6.7);
(3)使用指定端口(一般选1024以上的端口)建立多播套接字
MulticastSocket s=new MulticastSocket(6798);
(4)加入多播组。
s.joinGroup(group);
(5)创建一个数据报封装多播信息
DatagramPacket hi=new DatagramPacket(msg.getByte(),msg.length().group(),group,6789);
(6) 发送消息
s.send(hi)
下面给出具体实现例子:
发送消息端 Sender.java
发送。
(1)确定发送消息的具体内容;
String msg="hello";
(2)选用专门为多播指定的D类IP地址(224.0.0.1到239.255.255.255),创建一个多播组
InetAddress group=InetAdress.getByName(228.5.6.7);
(3)使用指定端口(一般选1024以上的端口)建立多播套接字
MulticastSocket s=new MulticastSocket(6798);
(4)加入多播组。
s.joinGroup(group);
(5)创建一个数据报封装多播信息
DatagramPacket hi=new DatagramPacket(msg.getByte(),msg.length().group(),group,6789);
(6) 发送消息
s.send(hi)
下面给出具体实现例子:
发送消息端 Sender.java
import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; import java.net.UnknownHostException; public class Sender { public static void main(String[] args) { //待发送的消息 try { byte[] arb=new byte[]{'h','e','l','l','o'}; //创建一个多播套接字 ip:230.0.0.1 端口:7777 InetAddress inetadress=InetAddress.getByName("230.0.0.8"); DatagramPacket datagram=new DatagramPacket(arb,arb.length,inetadress,7777); //新建一个数据包,封装多播消息并将其发出去 MulticastSocket multicastSocket=new MulticastSocket(); multicastSocket.send(datagram); System.out.println("发送消息"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }接收消息端 Receiver.java
import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; public class Receiver { public static void main(String[] args){ try{ //加入到Ip为230.0.1,端口为7777的多播组中,并通过创建一个多播套接字来接受多播消息 MulticastSocket multicastsocket=new MulticastSocket(7777); InetAddress inetaddress=InetAddress.getByName("230.0.0.8"); multicastsocket.joinGroup(inetaddress); System.out.println("接收到消息"); //无线循环接收来自发送端的消息 while(true){ //System.out.print(1); byte[] arb=new byte[100]; DatagramPacket datagrampacket=new DatagramPacket(arb,arb.length); // System.out.print(1); multicastsocket.receive(datagrampacket); // System.out.print(1); System.out.println(new String(arb)); } }catch(Exception e){ } } }
相关文章推荐
- 从高版本JDK换成低版本JDK报错Unsupported major.minor version 52.0
- Spark问题
- 关于 AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
- spring中classpath和classpath*的配置区别
- Spring的Maven项目错误
- 《编程导论(Java)》格言录
- 优化JavaScripe 提升首页加载速度的几种方案解析
- Java基础之Format
- eclipse中hibernate配置*.hbm.xml文件和hibernate.cfg.xml文件使其能自动提示
- java语法基础(总结)
- Java7并发编程实战(一) 线程的等待
- java基础-java语言中的关键字总结
- spring四种依赖注入方式
- Myeclipse实用快捷键总结
- java设计模式之观察者模式
- yiluo-----Eclipse 插件Maven在使用 add dependency,找不到包,解决办法
- 关于struts2中action获取参数的三种方法
- java key tool 命令
- JAVA中转义字符的使用
- Java接收串口数据