我有一个可以存在多个服务器的应用程序。有很多关于如何使用 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。
关于java - 多服务器发现 - Java/Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810928/