【问题标题】:Network discovery in Java Multicast/Broadcast JavaJava Multicast/Broadcast Java 中的网络发现
【发布时间】:2012-01-17 08:25:58
【问题描述】:

这就是我正在尝试做的事情 - 服务器向网络上的所有 PC 和启动并运行的 PC 发送“活动消息”,通过发送其 IP 来响应呼叫。

我正在研究一个轻量级的代码,因为这将构成我的应用程序的一小部分。

我查看了 Jini 和其他服务,但发现我可能不需要它们的一半功能(除了网络发现)

如果我可以: 1.使用for循环,服务器打开一个套接字,检查(使用for循环)是否通过发送“Alive”消息可以访问所有IP x.x.x.x。 2. 客户端在特定套接字处接收到“alive”消息后,客户端会使用其 IP 进行回复。

这个方法好吗?你认为我能以更好的方式做到这一点吗?

谢谢!

【问题讨论】:

  • 注意-服务器将其IP与Alive一起发送出去,客户端只有在服务器发送后才知道IP。我不打算对任何 IP 进行硬编码。谢谢!
  • 谢谢!但是多播 UDP 示例假设他们知道客户端的 IP。但是,我需要在没有服务器已知的客户端 IP 的情况下进行网络发现。广播听起来是个不错的选择?
  • @P Ramesh,是的,广播应该没问题。请看下面我的回答

标签: java networking broadcast multicast


【解决方案1】:

我很久以前遇到过类似的问题,我解决了如下:

  • 服务器在网络上向 255.255.255.255 广播一个 UDP 数据包
  • 所有可访问的客户端都将使用 UDP 数据包进行响应,其中包括其 IP 和您希望发送的任何其他信息。

我个人用的包是这样的

public class UDPDiscoveryPacket{
      public final long sendingTime;
      public final String clientIP;
      public UDPDiscoveryPacket(long sendingTime, String clientIP){
         this.sendingTime = sendingTime;
         this.clientIP = clientIP;
      }
}

【讨论】:

  • @GETah- 是的,我会试试的。同时,我修改了一个多播 UDP 示例,其中服务器将其 IP 发送到某个随机 IP 的组。该组的所有客户端都使用其 IP 进行响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多