如何中止LocalServerSocket.accept

时间:2011-12-15 19:48:28

标签: android sockets abort

如何在后台线程中中止/中断LocalServerSocket等待LocalServerSocker.accept()方法中的连接?

我试图从另一个线程调用close()方法,但它似乎不起作用。

2 个答案:

答案 0 :(得分:1)

在Android项目中为它打开了一张票:http://code.google.com/p/android/issues/detail?id=29939

似乎问题已得到Google的确认,因为第一条评论是:

  

我认为我们应该重写它以使用相同的底层libcore   东西,并免费获得中断行为。

解决方法可以是从另一个线程向LocalServerSocket发送自定义关闭命令以取消阻止接受。

答案 1 :(得分:0)

代替localSocket.close,使用以下命令:(需要API 21 +)

try {
    Os.shutdown(localSocket.fileDescriptor, OsConstants.SHUT_RDWR)
} catch (e: ErrnoException) {
    if (e.errno != OsConstants.EBADF) throw e   // suppress fd already closed
}