0
点赞
收藏
分享

微信扫一扫

LocalServerSocket accept线程无法退出

小禹说财 2022-05-05 阅读 80

一、问题

启动了个线程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()
            }
举报

相关推荐

0 条评论