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