`
行者买刀
  • 浏览: 194684 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

利用MulticastSocket来进行局域网的组播及网间的遐想

 
阅读更多

超级本本降价风暴

  之前也写了一个类似飞鸽的小软件,但写得不是很完整,现在也懒得再去动它了.现在回顾下multicastSocket这个类,以备不时之需.

 MulticastSocket是种多播,也叫组播.而广播的概念更广.是所有组播放的总合.目前还是很难实现的.因为包的生存一般只在一个router下就over了,如果要让它生存下来,第一就是这个router支持转发.另外就是设置ttl大于1,因为ttl每经过一个router它就会减1,直到它小于0为止.就不再转发.Multicast 它是种UDP,具有加入internet上其他多播主机的"组"的功能.

以下摘自API:

// join a Multicast group and send the group salutations
 ...
 String msg = "Hello";
 InetAddress group = InetAddress.getByName("228.5.6.7");
 MulticastSocket s = new MulticastSocket(6789);
 s.joinGroup(group);
 DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),
                             group, 6789);
 s.send(hi);
 // get their responses!
byte[] buf = new byte[1000];
 DatagramPacket recv = new DatagramPacket(buf, buf.length);
 s.receive(recv);
 ...
 // OK, I'm done talking - leave the group...
 s.leaveGroup(group);

 

此时只要加入这个组播组和这个端口就可以收到任何人发的包的.

 

网间:

  跨网间之间的通讯则会比较难于实现,就像飞鸽,如果是跨网段的话,就会找不到这个人,此时我们可以通过添加"要广播主机地址"来完成,它就会给该地址发UDP包.

 假如A地址是172.114.2.3而B地址是172.114.4.2那么它两个就是在不同的网段,而此时我们又不想通过加IP,而让A自动去寻找B.要怎么实现呢?

 一个想法就是一个个的去发包,通过for循环给从172.114.1.1到172.114.255.255一个个的发包,这样大概算起来要65535个包,如果收到了就给回应,取消发包,这样也是可以找到我们要找的人了.

代码实现如下:(假如我们知道IP范围是在100到125之间,我们一个个的人工去给它们发包了.)

  

for (int i = 100; i < 125; i++) {
                    group = InetAddress.getByName("192.168.1."+i);
                    ms.send(Util.getDataPacket(group, MULTICAST_PORT, MULTICAST_TEST));
 }

 

分享到:
评论

相关推荐

    udp局域网点播和组播发送实例

    总之,`udp局域网点播和组播发送实例`是一个基于UDP的通信系统,它利用了Java的`java.net`包提供的类来实现点对点和点对多点的数据传输。这个实例可以帮助开发者理解如何在局域网环境下有效地进行多媒体数据的传输。

    组播技术代码

    2. 网络环境:组播通常在局域网内进行,需要确保网络支持组播,并且设备之间可以通过局域网连接。 3. 释放资源:在完成组播通信后,记得关闭MulticastSocket,释放网络资源。 通过以上介绍,我们可以看到Android...

    java使用MulticastSocket实现组播

    Java 使用 MulticastSocket 实现组播是指通过使用 Java 语言中的 MulticastSocket 类来实现组播功能的技术。组播是一种允许源进程将数据包发送到多个目标进程的网络技术。组播源将数据包发送到特定组播组,只有属于...

    MulticastSocket收发小例子

    例如,服务器端创建`MulticastSocket`,加入多播组,然后在一个循环中不断调用`receive()`来接收数据;客户端创建`MulticastSocket`,加入相同的多播组,准备好数据后创建`DatagramPacket`,并通过`send()`方法将其...

    MulticastSocket广播服务器ip地址及端口然后接受tcp连接

    通过MulticastSocket将服务器的IP地址及端口广播每隔4s出去,然后开启每个ip及port对应的tcp等待连接,TCP的等待连接时间为1s,等待接收时间为2s。广播接收者不断接受广播信息并过滤,如果与自己有关则返回信息。

    test_multisock,UDP组播测试工具

    描述中的链接指向了CSDN博客上的一篇文章,虽然具体内容未给出,但通常会包含如何使用`test_multisock`进行UDP组播测试的详细步骤、配置指南以及可能遇到的问题和解决方案。这类测试可能涉及网络环境的设置、多播组...

    MulticastSocket聊天

    今天我们将深入探讨一个特殊的网络通信机制——多播(Multicast),以及如何利用Java中的`MulticastSocket`类来实现一个无需服务器的聊天工具。这个工具允许多个客户端之间进行广播式通信,大大降低了系统复杂性。 ...

    MulticastSocket网络编程

    描述中提到的是一个“不需要服务端的聊天程序”,这意味着可能使用了多播来实现点对点或者多对多的通信,无需中心服务器转发消息。在这种场景下,每个参与者都可以既是发送者也是接收者,通过加入同一个多播组进行...

    Multicastsocket

    Multicastsocket

    多播 Multicast Socket示例

    去掉了下载分限制 对于UDP组播的一些认识 &lt;br&gt; 利用UDP组播能在intarnet,internet上也数据报的形式进行数据的组播(在internet上进行组播,要求路由器支持IGMP(internet网关管理协议,这个协议是在IP出现以后,...

    java实现的组播聊天室

    综上所述,Java实现的组播聊天室是利用了UDP协议的特性,通过`MulticastSocket`类进行组播通信,结合命令行交互,实现了在特定组内进行聊天的功能。这种设计既满足了实时性需求,又有效地利用了网络资源。

    MulticastSocket编程

    在Java的网络编程中,`...总之,`MulticastSocket`是Java中实现多播通信的关键工具,通过合理利用它可以构建高效、灵活的多用户交互系统,而无需中心服务器进行数据转发,大大降低了网络通信的成本和复杂性。

    java开发的组播聊天室

    Java中,我们可以利用`java.net.MulticastSocket`类来实现组播功能。首先,创建一个MulticastSocket实例,然后加入到指定的组播组,这样就能接收到该组播组内的消息。 在聊天室的实现中,服务器端通常需要监听特定...

    java udp 组播

    Java UDP组播是一种在局域网或互联网上高效传播数据的方法,它允许一个发送者将消息一次性广播到多个接收者,而无需为每个接收者单独发送。这种技术在实时流媒体、多玩家游戏和分布式系统中非常常见。下面将详细阐述...

    Java网络编程_MulticastSocket类的使用

    * 减少网络阻塞:MulticastSocket 类可以减少网络阻塞,因为服务器程序只需要将数据发送到多点传送组,而不需要对每个客户端进行单独的传输。 五、结论 MulticastSocket 类是 Java 网络编程中的一种非常有用的类,...

    用Java实现IP组播

    在项目实践中,你可能会遇到文件传输、视频直播、实时聊天等场景,都可以利用Java的IP组播功能进行优化。通过阅读和理解提供的压缩包文件中的示例代码,你可以更深入地了解如何将这些概念应用于实际项目。

    MulticastSocket编程_2

    描述中提到的"MulticastSocket编程聊天不需要服务端",意味着这个应用利用了IP组播的特性,允许用户之间直接进行通信,无需设置和维护中央服务器。在这种模型中,每个客户端都是一个组播组的成员,可以发送和接收组...

    包含发送和接收的udp组播项目

    通过实际操作,开发者可以深入理解如何在Java中实现组播通信,包括设置组播组、创建和配置MulticastSocket、以及处理数据包的发送和接收。同时,这也是一个很好的示例,展示了如何在NetBeans这样的IDE中组织和管理...

    组播通信的源代码资源

    例如,在Java中,可以使用`java.net.MulticastSocket`类进行组播数据的发送和接收。 7. **网络硬件支持**:为了支持组播,网络设备(如交换机和路由器)需要具备组播功能,能够识别和处理组播数据包,将其转发给有...

    Java组播代码

    在Java中,还可以使用`java.net.NetworkInterface`类来获取网络接口信息,并通过`NetworkInterface`对象与`MulticastSocket`交互,实现更精细的组播组管理,如选择特定的网络接口发送或接收多播数据。 8. **多播...

Global site tag (gtag.js) - Google Analytics