在java中同时监听两个端口

时间:2014-09-07 01:43:00

标签: java sockets serversocket ports

我正在使用java开发聊天应用程序。我要实现的功能之一是,在client1与客户端2聊天(工作正常)之后,client1会将辅助信息(来自Arduino的数据)发送到client2。我的想法是在服务器上监听两个端口,一个用于聊天,另一个用于辅助信息,我使用两个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"中得到了Exception。显示java.lang.NullPointerException

感谢。

1 个答案:

答案 0 :(得分:0)

当然他们会阻止。 accept()是一种阻塞方法。

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