gpt4 book ai didi

java - MulticastSocket 确定收到的消息是否是单播的

转载 作者:行者123 更新时间:2023-12-02 13:01:06 28 4
gpt4 key购买 nike

我的服务器当前能够发送和接收多播数据包。我还添加了接收和发送单播数据包的功能。因此,我创建了“DatagramSocket uniRecv”和“DatagramSocket uniSend”来模仿多播的完成方式。问题是,当我收到数据包时,我需要一种方法来判断它是多播还是单播。我认为“multiRecv.receive(packet)”只能对多播数据包起作用,但显然它也可以对单播数据包起作用。有没有办法告诉在执行 .receive(packet) 之前或之后检测它是哪种数据包?

我需要知道,因为当我发送响应时,必须使用与收到响应相同的方法来完成。因此,如果我接收单播,我需要发送单播,如果我接收多播,我需要发送多播。

另一方面,MulticastSocket 也可以发送单播消息吗?

编辑:尽管接受的帖子是真实的,但我还是找到了解决方法。通过强制服务器向我发送数据包,使用不同的端口进行单播和多播,我能够使用 packet.getPort() 找出它是哪一个。

最佳答案

I need a way to tell if it is multicast or unicast. I thought "multiRecv.receive(packet)" would only work on multicast packets, but apparently it can also work on unicast packets. Is there a way to tell either before or after doing .receive(packet) to detect which kind of packet it is?

不在 Java 中。 BSD Sockets API 中有一个功能可以检索数据报的目标地址,但它没有在 Java 中实现。

I need to know because when I send out a response it has to be done using the same method as it was received. So if I receive unicast I need to send unicast and if I receive multicast I need to send multicast.

抱歉,无法在 Java 方面为您提供帮助。

On another note, can a MulticastSocket also send a unicast message?

是的。还请注意,您不需要 MulticastSocket发送多播,并且您不需要加入组只是为了发送。

关于java - MulticastSocket 确定收到的消息是否是单播的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288950/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com