我有一个应用程序,可以存在多个服务器.有很多关于如何使用UDP来发现服务器的例子,但似乎这只适用于单个服务器.
如果存在多个响应会发生什么?它们是否排队,损坏(有UDP陷阱)或其他什么?
我想了解如何从Android设备发送的UDP广播中接收多个响应.如果这不可行,是否有任何其他推荐的方法用于Android客户端的多服务器发现..
谢谢
我会首先将数据包发送到您想要询问的所有服务器,然后让所有服务器响应.既然你想知道如何收到包裹,我会这样做:
long responseTimeout = 4000; long start = System.currentTimeMillis(); while(true){ long now = System.currentTimeMillis(); if(now - start < responseTimeout){ datagramSocket.setSoTimeout((int) (responseTimeout - (now - start)); }else{ break; } try{ datagramSocket.receive(packet); addOnlineServer(packet.getAddress()); }catch(SocketTimeoutException e){ break; } }
在一段时间内你的android客户端应该等待响应,并将收到的包的每个ip添加到在线服务器列表中.
当你使用UDP时,当然有些软件包可能会丢失,但这就是你得到的.如果您想确保没有包丢失,请改用TCP.