讲解Java的Socket网络编程的多播与广播实现.docx
上传人:一条****ee 上传时间:2024-09-13 格式:DOCX 页数:3 大小:11KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

讲解Java的Socket网络编程的多播与广播实现.docx

讲解Java的Socket网络编程的多播与广播实现.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

讲解Java的Socket网络编程的多播与广播实现讲解Java的Socket网络编程的多播与广播实现在Java中,我们可以有很多种方法来发送和接收数据。有的方法比较靠近底层,有些问题就需要程序员自己去解决,而有些方法抽象层次比较高,很方便地就可以拿来使用。这些处理数据的方法根据抽象层次由低到高分别有:1.手动编码:使用位运算逐个自己编码和解析。2.利用流来自动编码:组合使用OutputStream和ByteArrayOutputStream。3.序列化:将数据放入一个数据对象中,直接将这个对象序列化后发送。使用起来很方便,但要注意效率的损失,以及接收方也要使用Java。4.RMI:将对方法的调用都发送过去了,直接实现了方法的远程调用。在最底层的方法1中,我们需要自己解决一些底层的问题:1.整型的发送:要考虑是大尾端还是小尾端,是无符号的还是有符号的整数。2.字符串的.发送:要考虑编码问题。3.无长度限制的类型,如大整数:要编码成帧Frame,通过定界符或者长度位来区分每帧。多播与广播我们可以向每个接受者单播一个数据副本,但这样做效率可能非常低。只有UDP套接字允许广播和多播,两者的区别是:广播会发送到网络上所有可达的主机,有些操作系统可能不允许普通用户进行广播操作;而多播只发送给感兴趣的主机。具体来说是调用MulticastSocket的joinGroup()加入到多播组的主机。publicclassMulticastReceiverTest{publicstaticvoidmain(String[]args)throwsException{finalInetAddressaddress=InetAddress.getByName("224.1.1.1");finalintport=45599;for(inti=0;i<5;i++){newThread("Thread#"+i){@Overridepublicvoidrun(){try{MulticastSocketsock=newMulticastSocket(port);sock.joinGroup(address);byte[]msg=newbyte[256];DatagramPacketpacket=newDatagramPacket(msg,msg.length);sock.receive(packet);System.out.println(Thread.currentThread().getName()+"receive:"+newString(packet.getData()));}catch(IOExceptione){e.printStackTrace();}}}.start();}Thread.sleep(2000);MulticastSocketsock=newMulticastSocket();sock.setTimeToLive(32);byte[]msg="hellomulticast".getBytes();DatagramPacketpacket=newDatagramPacket(msg,msg.length,address,port);sock.send(packet);System.out.println("Messagesent");}}