android - 线程是否停止执行并继续?这只是令人困惑

标签 android client-server

我在代码中添加了日志只是为了了解它的执行顺序和时间,但到目前为止它只是令人困惑!

当我执行这段代码并启动服务器时,我得到了这些输出


"启动服务器", "ServerThread"

"监听", "服务器线程"

“连接到达”,“ServerThread”


然后停在那里,当我连接到服务器时,我只得到


“已接受连接”,“ServerThread”


就好像挂着一样

socket = serverSocket.accept();

难道不应该因为某种异常而退出尝试并再次打印整个内容吗?

class ServerThread implements Runnable {

    public void run() {
        Socket socket = null;
        try {
            Log.e("start server", "ServerThread");
            serverSocket = new ServerSocket(SERVERPORT);
        } catch (IOException e) {
            e.printStackTrace();
            Log.e("IO error at starting server", "ServerThread");
        } catch (Exception e) {
            Log.e("Exc at starting server", "ServerThread");
        }
        while (!Thread.currentThread().isInterrupted()) {
            Log.e("listening", "ServerThread");
            try {
                Log.e("connection arrived", "ServerThread");
                socket = serverSocket.accept();
                Log.e("connection accepted", "ServerThread");
                CommunicationThread commThread = new CommunicationThread(
                        socket);
                new Thread(commThread).start();

            } catch (IOException e) {
                e.printStackTrace();
                Log.e("IO error at accept", "ServerThread");
            } catch (Exception e) {
                Log.e("Exc at accept", "ServerThread");
            }
        }

    }
}

最佳答案

这是一个阻塞方法,它会阻塞直到你收到一个连接。

查看文档:http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#accept()

关于android - 线程是否停止执行并继续?这只是令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24828051/

相关文章:

android - 如何使进度对话框与更高版本的android兼容

c++ - 在使用 C++ 和 qt 的实时音频服务器中,在哪里将 Wav header 添加到数据中?

javascript - 如何在客户端/客户端计算机上主动运行 PHP 脚本?

java - 应用程序服务器(带有 EJB)是 Java EE 客户端/服务器通信的唯一方式吗?

Android Material Design "Text field dropdown menu",选择器(微调器)

android - 通过编程方式 (Android) 的以太网连接( Root设备)

tcp - 如何在 Go 编程中将 []byte 转换为 int

c - 在 C 中使用第二次调用 send() 时出现问题

java - 如何在android中的剩余文本中添加文本

java - 发卡时能唤醒设备吗?