`

组播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)
  {
  }
分享到:
评论

相关推荐

    多播 Multicast Socket

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

    多播 Multicast Socket示例

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

    实验三Socket通信实验报告.doc

    群组通信功能 组播编程需要UDP,有两个类支持组播网络编程Socket和UdpClient.一台计算机要加 入某一个组,然后接收发往这个组的信息。Socket类要调用SetSocketOption函数加入和 离开某一个组。UdpClient类有直接的...

    通过rawsocket实现报文侦听拦截

    通过rawsocket实行报文侦听拦截,分析报文内容特征,获取关键信息。可以作为实现嗅探软件的基础框架。

    C#的Socket实现UDP协议通信示例代码

    今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础。众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层。与TCP协议同层,都是提供...

    Java网络编程(第三版)中文版.part11.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)高清中文版.part01.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part06.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part07.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part09.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part01.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part03.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part04.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part02.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part10.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part13.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part05.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part12.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    Java网络编程(第三版)中文版.part08.rar

    第十四章 组播socket 478 何为组播socket? 479 使用组播socket 487 两个简单示例 495 第十五章 URLConnection 501 打开URLConnection 502 读取服务器的数据 503 读取首部 505 配置连接 514 配置客户端的...

    java网络编程

    本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...

Global site tag (gtag.js) - Google Analytics