首页 > 解决方案 > 使用java向同一路由器下的多个主机发送数据包

问题描述

我们是一群中学的孩子,他们试图用java实现一个程序,它就像网络下的聊天服务器,我们在网络外有一个服务器,每个客户端都在学校的网络内,我们想知道怎么能我们从服务器向网络中的每个客户端发送 1 个数据包,因为在该路由器后面有许多计算机(客户端)。

标签: javasocketsnetworking

解决方案


你在这里有两个选项:

  1. 广播
  2. 多播

我更喜欢multicast它,因为它更有效并且不会干扰网络中的每台计算机。


它是如何工作的?

多播是在一次传输中向一组听众广播消息的能力。

多播的一个很好的类比是广播,成千上万的人可以收听一个广播事件并收听相同的消息,计算机在向听众发送消息时可以做类似的事情。

一组客户端机器可以调谐到相同的地址和端口号,以接收服务器广播到该地址和端口的消息。

Java 语言通过数据报消息传递提供多播功能。数据报是独立的、无保证的消息,可以通过网络传递给客户端。(无保证意味着到达、到达时间和内容是不可预测的。)与通过 TCP 发送的消息不同,发送数据报是一个非阻塞事件,发送者不会收到消息的接收通知。

数据报是使用用户数据报协议 (UDP) 而不是 TCP 发送的。只要消息的顺序、可靠性和数据完整性不是关键任务,通过 UDP 发送多播消息的能力是 TCP 的优势之一。

检查1 2 3以获取有关该主题的更多信息


推荐阅读