多服务器发现 - Java/Android

 我叫博小微 发布于 2023-02-07 18:40

我有一个应用程序,可以存在多个服务器.有很多关于如何使用UDP来发现服务器的例子,但似乎这只适用于单个服务器.

如果存在多个响应会发生什么?它们是否排队,损坏(有UDP陷阱)或其他什么?

我想了解如何从Android设备发送的UDP广播中接收多个响应.如果这不可行,是否有任何其他推荐的方法用于Android客户端的多服务器发现..

谢谢

1 个回答
  • 我会首先将数据包发送到您想要询问的所有服务器,然后让所有服务器响应.既然你想知道如何收到包裹,我会这样做:

    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.

    2023-02-07 18:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有