网络通信中的单播、广播和组播的实现
来源:互联网 发布:chrome缓存文件夹 mac 编辑:程序博客网 时间:2024/06/05 10:31
网络访问
目前网络访问分为单播、广播和组播,以下将介绍其Java实现。
单播
单播就是点对点的通信,如下图所示:
实现
单播服务端
public class SingleServer extends Thread{ public void run(){ try { int port = 30000; byte[] buffer = new byte[1024]; DatagramSocket server = new DatagramSocket(port); DatagramPacket recivePacket = new DatagramPacket(buffer,buffer.length); while(true){ server.receive(recivePacket); String str = new String(buffer,0,recivePacket.getLength()); System.out.println("SingleServer接收到的:"+str); } } catch (Exception e) { e.printStackTrace(); } }}
单播客户端
public class SingleClient extends Thread{ public void run(){ try{ String str = "要发送的数据"; int port = 30000; DatagramSocket client = new DatagramSocket(); SocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(),port); DatagramPacket sendPacket = new DatagramPacket(str.getBytes(),str.getBytes().length,address); client.send(sendPacket); client.close(); }catch(Exception e){ e.printStackTrace(); } }}
广播
广播就是对一个网络中的所有主机发送数据包,如下图所示:
实现
广播服务端,和单播的服务端一样。
public class BroadcastServer extends Thread{ public void run(){ try { int port = 30000; byte[] buffer = new byte[1024]; DatagramSocket server = new DatagramSocket(port); DatagramPacket recivePacket = new DatagramPacket(buffer,buffer.length); while(true){ server.receive(recivePacket); String str = new String(buffer,0,recivePacket.getLength()); System.out.println("BroadcastServer接收到的:"+str); } } catch (Exception e) { e.printStackTrace(); } }}
广播客户端,和单播的客户端的区别是,发送的host地址为“255.255.255.255”广播地址。
public class BroadcastClient extends Thread{ public void run(){ try{ String str = "要发送的数据"; String host = "255.255.255.255"; int port = 30000; DatagramSocket client = new DatagramSocket(); SocketAddress address = new InetSocketAddress(InetAddress.getByName(host),port); DatagramPacket sendPacket = new DatagramPacket(str.getBytes(),str.getBytes().length,address); client.send(sendPacket); client.close(); }catch(Exception e){ e.printStackTrace(); } }}
组播
组播就是对一个组里面的所有主机广播,如下图所示:
实现
组播的服务端,预先定义一个组播地址,然后加入到组中。组播地址必须和客户端一样,才能够接收到客户端发送的信息。
public class MulticastServer extends Thread{ public void run(){ try { byte[] buffer = new byte[1024]; int port = 30000; InetAddress address = InetAddress.getByName("230.0.0.1"); DatagramPacket recivePacket = new DatagramPacket(buffer,buffer.length); MulticastSocket server = new MulticastSocket(port); server.joinGroup(address);//需要join到组播地址,否则收不到组播信息 while(true){ server.receive(recivePacket); String str = new String(buffer,0,recivePacket.getLength()); System.out.println("MulticastServer接收到的:"+str); } } catch (Exception e) { e.printStackTrace(); } }}
组播客户端,组播地址和服务端一样
public class MulticastClient extends Thread{ public void run(){ try{ String str = "要发送的数据"; int port = 30000; InetAddress address = InetAddress.getByName("230.0.0.1"); MulticastSocket client = new MulticastSocket(); client.joinGroup(address); DatagramPacket sendPacket = new DatagramPacket(str.getBytes(),str.getBytes().length,address,port); client.send(sendPacket); client.close(); }catch(Exception e){ e.printStackTrace(); } }}
0 0
- 网络通信中的单播、广播和组播的实现
- 网络通信:单播、广播、组播
- Zigbee单播、组播、广播网络通信
- 单播、多播(组播)和广播的
- zigbee网络单播、广播和组播--简单笔记
- 多播(组播)、单播、任播和广播
- 理解单播、组播和广播
- 单播,组播和广播
- 单播、组播和广播 区别
- 网络通信之单播,广播,多播
- 单播、组播、广播的区别和特点
- 单播、广播、组播的区别和特点
- 单播、组播、广播的区别和特点
- 单播、广播、组播的区别和特点
- 单播、组播和广播的区别
- 单播、广播、组播的区别和特点
- 单播、广播、组播的区别和特点
- 单播、广播、组播的区别和特点
- .NET MVC TempData、ViewData、ViewBag
- linux网络编程之shutdown() 与 close()函数详解
- Hadoop的HA集群启动和停止流程
- 整理的ANDROID开发资源
- (ssl1197)P2563 质数和分解
- 网络通信中的单播、广播和组播的实现
- TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器
- 第二次爬虫实战--知乎
- java程序在开发工具上运行正常,打包之后本地运行报错Attempt to refer to a unregistered pool by its alias '**'
- 一文读懂机器学习,大数据/自然语言处理/算法全有了……
- 用vs2013编译用vs2015写的memcached遇到的平台问题
- android7.0 点击reset app preferences,后台services关闭
- POJ
- ISO-OSI的七层协议经典架构