有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中,socket同时监听两个端口

我正在使用java开发一个聊天应用程序。我想实现的功能之一是,除了client1与client2聊天(工作正常)之外,client1还将向client2发送辅助信息(来自Arduino的数据)。我的想法是监听服务器上的两个端口,一个用于聊天,另一个用于辅助信息,我使用了两个ServerSockets,当然还有两个accept()语句,它们一直处于阻塞状态。我的问题是如何在java中同时打开两个端口? 我是这样开始的:

new Thread() {
            public void run() {

                while(true) {
                    try {
                        Socket client1 = server.accept();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    //handle client1
                }
            }}.start();
            new Thread() {
                public void run() {

                    while(true) {
                        try {
                            Socket client2 =arduinoServer.accept();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        //handle client1
                    }
                }}.start();

但我在线程“pool-1-thread-1”java中遇到了一个例外。lang.NullPointerException

谢谢


共 (1) 个答案

  1. # 1 楼答案

    当然,他们一直在阻挡。accept()是一种阻塞方法

    需要两个线程中的两个accept()循环