0

在我当前的项目中,我将智能手机用作服务器。当通过 检测到特殊卡片或标签时,服务器将启动NFC。这是有效的部分。

为了实现这一点,我使用的AsyncTask是在扫描标签后开始的。现在的问题是,当他当前正在调用时,我无法停止服务器ServerSocket.accept()。在他等待连接请求时,调用AsyncTask.cancel(true)不会停止服务器。

如果我想在某个时候停止服务器,我该怎么做?

现在我很无知。我唯一的想法是为 serversocket 设置超时时间,从而引发异常。但这意味着投票ServerSocket.accept()不是唯一的方法吗?如果是这样,那在我看来将是一个相当糟糕的解决方案...

4

1 回答 1

2

一种方法是您可以从另一个线程调用 ServerSocket 上的 close(),这将在 accept() 中抛出一个 SocketException。

另一种是使用您正在考虑的超时。

有关如何实现此功能的想法,请参阅以下帖子:

如何中断 ServerSocket accept() 方法?

Java 停止服务器线程

关闭监听 ServerSocket

停止套接字侦听接受

如何解除阻塞在 ServerSocket.accept() 上的线程?

于 2012-12-20T07:45:27.903 回答