java - 更新 UI 时接收多个 UDP 数据包

标签 java android multithreading udp datagram

我有一个应用程序,我从服务器接收信息,然后在屏幕上向用户显示该信息。由于信息很多,我想在收到信息时更新 UI。

发送/接收是在单独的线程上完成的。

两个问题:

  1. 如何才能最好地接收多个 UDP 数据包? 我当前接收一个数据包的代码

    try {
    Log.i(TAG,"Listening...");
    _dcOut.setSoTimeout(20000); 
    _dcOut.receive(packet);/* Wait to receive a datagram */
    haveDatagram = true;
     Log.d(TAG,"dc_out, received...");
    }
     catch (Exception e) { // can be just a time out
    haveDatagram = false;
         Log.d(TAG,"dc_out, failed to receive...");
     }
    
  2. 是否可以在接收多个 UDP 数据包时更新 UI?

编辑: 我正在使用绑定(bind)服务从服务器获取信息(具体为 AIDL)。设置如下:

我要么: 1. 获取一个单独的对象并将其发回,这就是该特定服务实例的对象,或者 2.我可以发回该服务的列表

我的想法是,我应该发回一个包含 5-10 个对象的列表,然后重复一段时间?

--我觉得我无法在使用此服务设置接收数据包时更新 UI--

最佳答案

如果 UDP 数据包的接收是在单独的线程上完成的,那么在 GUI 上显示它应该没有问题!

您的代码显示仅接收 UDP 数据。我需要更多具体信息:)

只有一个 UDPSocket 处理特定端口上的传入数据,它们将全部(数据包)按顺序存储在专用于该特定进程的缓冲区中。

关于java - 更新 UI 时接收多个 UDP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470550/

相关文章:

java - Spark 中的 DataFrame 到 Json 数组

java - 生成失败的评估根项目-Gradle

android - Unresolved reference :尽管实现了支持,但RecyclerView:appcompat-v7:28.0.0

java - 如何修复adb : error: cannot bind listener: Operation not permitted react-native?

java.sql.SQLException : [Microsoft][ODBC Microsoft Access Driver] Cannot update. 数据库或对象是只读的

java - Android Kitkat 默认短信应用

多线程问题

c++ - 在线程中等待一段时间,或者直到条件发生

c++ - 为什么添加线程不能带来进一步的性能提升

java - HttpServletResponse、addCookie() 的行为不符合预期