java - 使用多播在 Java 中进行网络发现

标签 java networking discovery

我正在尝试制作客户端/服务器 Java 应用程序。客户端和服务器都将在同一个 wi-fi 网络上运行。服务器将在客户端知道的特定端口上运行。

我计划从客户端通过网络为特定端口发送多播消息以发现服务器。但是,我不太确定如何找出我网络中的哪个 IP 收到了我的消息。

我是否需要在客户端创建套接字并在发送多播消息后监听传入的数据包以防服务器回复?

提前致谢。

最佳答案

(1)服务器监听一个预先安排好的端口

DatagramSocket s = new DatagramSocket(8888);
s.receive  //(1)
s.send     //(2)

(3)客户端向端口发送消息,在广播IP上,255.255.255.255

DatagramSocket c = new DatagramSocket();
c.send(255.255.255.255:8888,msg)     //(3)
c.receive  //(4)

客户端也绑定(bind)到一个端口。我们没有指定它,所以它是为我们随机选择的。

(3) 将消息广播到所有本地机器,(1) 的服务器接收消息,客户端IP:端口。

(2)服务器向客户端IP:端口发送响应报文

(4) 客户端得到服务器的响应信息。

关于java - 使用多播在 Java 中进行网络发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258959/

相关文章:

c - OSPF - 校验和不起作用

docker - Spring Boot,Docker,Discovery eureka

java - Scene2D Actor 在本应不可见的情况下在屏幕上闪烁 1 帧

java - 在 spring 应用程序中使用多个调度程序 servlet

java构建多维数组,其中的单元格是数组列表

java - 什么是 RMI 注册表

java - 请求 JavaFX 线程在不使用 Platform.runLater 的情况下调用一些代码

java - 如何关闭 Apache Kafka 连接器任务?

带元数据的 WCF 服务发现

node.js - 如何在nodejs中发现onvif cam