是否可以确定udp套接字上是否有可用数据,而不是在数据可用之前阻塞?我想避免多线程我的应用程序因为它会引入复杂性 - 毕竟,我怀疑有很多人会喜欢不必要地玩线程和同步!
例如,在C#中,我可以调用socket.Available> 0
答案 0 :(得分:1)
如果这是一个TCP套接字你可以Socket.getInputStream().available()
,但根据你的帖子你正在使用UDP。你确定你真的想要使用UDP吗?
如果是这样 - 那么不,UDP套接字没有“可用字节”的概念 - 因为你并没有真正连接到另一端的任何东西。您只是盲目地监听数据到达特定端口。你必须坐下来等待事情的到来。在这种情况下,C#的socket.Available
实际上是一个外观。它只是告诉你套接字队列中剩余的字节数。
您可以使用Android的异步任务作为构建自己的线程等的简单替代方法。
http://developer.android.com/reference/android/os/AsyncTask.html