我目前正在尝试评估一个项目是否可以在Android上实现。我看到的一个主要问题是,由于它是一个P2P客户端,我们必须在运行时保持相当数量的连接打开。现在连接不会传输大量数据,它更像是一个消息传递系统,所以如果我们时不时地读取64字节的单个消息,那么每个连接都有一个线程会产生无用的开销。
所以我想知道Linux上是否支持非阻塞IO,比如select()或poll()。
有什么建议吗?
发布于 2010-11-28 04:49:05
查看java.nio套接字、选择器和通道。一些链接:
Android: Unbuffered IO http://developer.android.com/reference/java/nio/channels/ServerSocketChannel.html http://developer.android.com/reference/java/nio/channels/SocketChannel.html http://www.developer.com/java/article.php/3837316/Non-Blocking-IO-Made-Possible-in-Java.htm
或者,也许我没有正确理解你的问题。
发布于 2010-11-28 13:50:11
当然了。一旦你的应用程序声明了使用互联网的权限,你就可以使用NDK来做所有正常的linux联网操作,通常非root用户可以使用NDK,并且可以在java中做任何有人(如果没有人打败你,可能是你)费心写支持的事情。
好吧,有一个例外:你的移动提供商可能不会允许传入连接,大多数wifi路由器也不会,除非你特别设置它们。但这些都是基础设施问题,而不是android本身的问题。
您可能还需要想出一些活动的组合来提供前台UI和服务,以便在后台继续实际的传输,并且只显示一个状态栏图标。
https://stackoverflow.com/questions/4293448
复制相似问题