一、问题
启动了个线程accept等待连接,但把localSocketServer.close() 时accept不会抛异常,导致线程不会退出
Thread({
localSocketServer = LocalServerSocket(addressStr)
while (true) {
try {
socket = localSocketServer!!.accept()
}catch (e:Exception){
LogE("抛异常")
e.printStackTrace()
break
}
LogE("有新的连接")
}
}).start()
解决:用 Os.shutdown进行关闭
try {
Os.shutdown(localSocketServer!!.fileDescriptor, OsConstants.SHUT_RDWR)
} catch (e: ErrnoException) {
LogE("关闭失败")
e.printStackTrace()
}