我有一个用 Java 实现的程序,MulticastSocket
以执行网络发现。ArrayList
问题是,服务器每 5 秒向特定端口(在我的情况下为 4446)发送几个带有活动共享序列化的数据包,然后客户端接收到该数据包。但是,如果ArrayList
修改了,服务器会在下一次发送时将其发送出去,但客户端在收到时会收到服务器很久以前发送的旧包。
这是一个例子:
ArrayList
有 1 个元素。
服务器 -> 发送 -> 等待 5 秒 -> 发送数据包 #2 -> 等待 5 秒 ->在时间范围内修改ArrayList
-> 发送数据包 #3
客户端 -> 寻找活动共享 -> 接收数据包 #1 -> 1 个元素!好的!...(可以无限期等待——此时服务器已发送 #2 和 #3)
客户端 -> 查找活动共享 -> 接收 #packet 2 -> 1 个元素。不。
这就是失去所有一致性的地方,因为它应该(理想情况下)接收到数据包#3。
有什么方法可以使客户端始终收到发送的最新数据包?谢谢你。