`

组播Socket基础

阅读更多
组播是比单播宽比广播窄的目标性更强的点对点通信。组播将数据从一台主机发送给多个不同

的主机。数据只传到某些通过加入组播组的客户端。

程序员和网络管理员不用负责选择在哪些点上复制数据,甚至不用负责发送多个副本。
Internet路由器会处理这些事情。

应用程序只将数据报包发送给组播地址,路由器将确保包被发送到改组播组中的所有主机。

组播地址:称为组播组的一组主机所共享的地址。组播地址的范围在224.0.0.0---

239.255.255.255之间(都为D类地址 1110开头)。

从应用程序来讲组播和普通UDP socket之间的区别在于必须考虑TTL值。这时IP首部中取值 0-

255的一个字节。 它的含义为包被丢弃前通过的路由数目。每通过一个路由器,其TTL减少1,

有些路由器减少2或更多。当TTL值为0时包就被丢弃。

组播最大的限制在于特殊的组播路由器是否可用。 ping all-routers.mcast.net
查看网络是否连接组播路由器。


常用的API函数:

MulticastSocket()throws SocketException:绑定匿名端口
MulticastSocket(int port)throws SocketException:绑定已知端口
MulticastSocket(SocketAddress address)throws IOException:

你还可以向构造函数传送null,然后通过bind()方法进行连接

leaveGroup(InetAddress address)

public void joinGroup(InetAddress address)throws IOException
加入组播组


下面例子代码:
  try
  {
     MulticastSocket ms =new MulticastSocket(4000);
     InetAddress ia = InetAddress.getByName("224.2.2.2");
     ms.joinGroup(ia);
     byte[] buffer=new byte[8192];
     while(true)
     {
        DatagramPacket dp =new DatagramPacket(buffer,buffer.length);
        ms.receive(dp);
        String s=new String(dp.getData(),"8859_1");
        System.out.println(s);
     }
  }


例子2:将数据包发往组播组中的每台主机

try
  {
   InetAddress ia= InetAddress.getByName("experiment.mcast.net");
   byte[] data= "dddffssdfdfdf".getBytes();
   int port=4000;
   DatagramPacket dp =new DatagramPacket(data,data.length,ia,port);
   MulticastSocket ms =new MulticastSocket();
   ms.send(dp);
  }
  catch(IOException ex)
  {
  }
分享到:
评论

相关推荐

    vc udp通信 socket setsockopt 组播广播

    我们从组播的概念出发,深入探讨了组播地址的分配规则,并详细解释了如何使用Winsock API和`setsockopt`函数来配置Socket以支持组播功能。最后,通过一个具体的组播接收端示例代码,展示了实现组播通信的具体步骤。...

    多播 Multicast Socket

    224.0.0.0到224.0.0.255的地址最好不要用,因为他们大多是为了特殊的目的保持的(比如IGMP协议) <br>三.IGMP协议 IGMP(internet网关管理协议)是IP组播的基础.在IP协议出现以后,为了加入对组播的支持,IGMP...

    linux下socket编程(广播组播和udp)源码

    通过分析和运行这些源代码,学习者可以深入理解Linux下Socket编程的基础知识,以及广播、组播和UDP的工作原理。同时,由于这些代码是用标准C编写的,因此稍作修改,即可在Windows环境下运行,具有良好的跨平台性。

    多播 Multicast Socket示例

    224.0.0.0到224.0.0.255的地址最好不要用,因为他们大多是为了特殊的目的保持的(比如IGMP协议) <br>三.IGMP协议 IGMP(internet网关管理协议)是IP组播的基础.在IP协议出现以后,为了加入对组播的支持,IGMP...

    Socket组播_委托_事件_局域网编程综合应用

    Socket组播是一种网络通信技术,常用于在局域网中高效地广播信息。在这个综合应用中,我们将探讨如何使用Socket实现局域网内的组播功能,同时结合多线程、委托和事件处理来构建一个可运行的程序。下面将详细阐述相关...

    windows下UDP单播、广播播和组播实例

    本篇将详细讲解如何在Windows环境下,使用UDP进行单播、广播和组播的编程实践,我们将基于Visual Studio 2010开发环境进行说明。 首先,我们需要理解UDP的基础概念。UDP是一种不可靠的协议,它不保证数据包的顺序、...

    C++ UDP 组播 Multicast 源码

    **C++ UDP组播(Multicast)源码详解** UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,常用于实时数据传输或低延迟应用,如在线游戏、视频会议等。组播(Multicast)是UDP的一个重要特性,它允许...

    ZB.rar_Java 组播_android PC socket

    总的来说,Java 组播技术结合 Android 和 PC 平台的 Socket 编程,为跨设备的数据广播提供了高效且灵活的解决方案。无论是进行实时通信还是实现分布式服务,都能在减少网络资源消耗的同时,保证信息的快速传播。通过...

    windows下UDP组播(多播)发送和接收程序

    UDP组播,也称为多播,是一种网络通信方式,它允许单个数据源向多个接收者同时发送数据,而无需为每个接收者单独建立连接。这种方式在广播和流媒体服务中尤为常见,因为它能有效利用网络带宽并降低服务器负载。在...

    组播通信 分布式

    例如,以下代码展示了如何创建一个组播Socket并加入组播组: ```csharp using System.Net; using System.Net.Sockets; // 创建UDP Socket UdpClient udpClient = new UdpClient(); udpClient.Client....

    Qt:以太网udp组播发送与接收

    首先,理解UDP组播的基础知识。UDP是一种无连接的传输层协议,不保证数据包的顺序、完整性和可靠性,但具有较低的延迟和较高的效率。组播是UDP的一个扩展,它允许多个接收者同时接收到同一数据包,而不是像广播那样...

    简单明了的介绍UDP组播

    IGMP 协议是 IP 组播的基础。在 IP 协议出现以后,为了加入对组播的支持,IGMP 产生了。IGMP 所做的实际上就是告诉路由器,在这个路由器所在的子网内有人对发送到某一个组播组的数据感兴趣,这样当这个组播组的数据...

    笨笨熊聊天室--一个组播通信的实例源代码

    在UDP(用户数据报协议)基础上的组播,通过特定的IP组播地址来实现,这大大优化了大规模分布式系统中的实时数据传输,如在线视频流、直播或聊天室等场景。 2. **UDP协议**: UDP是传输层的无连接协议,相比TCP...

    linux 组播通信程序

    组播通信的基础是IP组播,它允许数据发送者(源)将数据一次性发送到特定的组播地址,这个地址代表了一组接收者(成员)。与传统的单播和广播相比,组播既避免了单播时的重复发送,也减少了广播时对网络资源的过度...

    组播发送与接收

    首先,我们需要了解组播的基础概念。在IP网络中,组播地址范围是224.0.0.0到239.255.255.255,这些地址不分配给特定的网络设备,而是用于表示一个组。当数据发送者向一个组播地址发送数据时,所有订阅了该组播地址的...

    C#组播程序

    下面我们将深入探讨C#的网络编程基础、组播的概念以及如何在C#中实现组播通信。 首先,C#的网络编程主要依赖于.NET Framework中的System.Net命名空间,它提供了丰富的类库来支持各种网络操作,如Socket、TcpClient...

    QT UDP组播的实现

    在QT中实现UDP(User Datagram Protocol)组播,可以让我们构建能够高效地向多个接收者广播数据的应用程序。UDP是一种无连接的协议,适用于实时数据传输,如音频、视频流等,因为它不需要建立连接和维护连接状态,...

    用Java实现IP组播

    这个socket允许我们加入组播组并发送或接收数据。 ```java MulticastSocket multicastSocket = new MulticastSocket(); ``` 2. **加入组播组**:使用`joinGroup`方法加入特定的组播组。组播组的地址是IPv4或者IPv6...

    用php的socket跟flash的socket通信

    2. **Flash 的 Socket 编程基础**:包括创建、连接、读取/写入数据、监听事件及断开连接等操作。 3. **Flash 的安全策略**:解释了为什么 Flash 需要安全策略文件,并如何配置安全策略文件。 4. **使用 PHP 解决 ...

    UDPMulticast组播图片

    在“UDPMulticast组播图片”这个场景中,我们可以理解为发送端使用UDP协议,并结合组播功能,将图片数据发送到网络上特定的组播组。这样,所有加入该组播组的接收端都能接收到这些图片数据,无需发送端重复发送。...

Global site tag (gtag.js) - Google Analytics