Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 永远在ObjectInputStream构造函数中等待_Java_Sockets_Objectinputstream_Objectoutputstream - Fatal编程技术网

Java 永远在ObjectInputStream构造函数中等待

Java 永远在ObjectInputStream构造函数中等待,java,sockets,objectinputstream,objectoutputstream,Java,Sockets,Objectinputstream,Objectoutputstream,我正在创建一个客户端服务器,如下所示: 服务器: 侦听器线程守护程序(始终侦听传入连接) 与连接的客户端发送/接收数据的服务对象 客户: 可以有许多客户端实例 然而,在连接建立后的任何一侧,创建ObjectOutputStream&ObjectInputStream类型的构造函数都要花费很长时间。谷歌搜索揭示了这一点。我遵循以下步骤: 1.首先创建ObjectOutputStream 2.冲洗 3.第二次创建ObjectInputStream 但这对我不起作用。想知道为什么 服务器: 侦听器线程

我正在创建一个客户端服务器,如下所示:

服务器:

侦听器线程守护程序(始终侦听传入连接)

与连接的客户端发送/接收数据的服务对象

客户:

可以有许多客户端实例

然而,在连接建立后的任何一侧,创建ObjectOutputStream&ObjectInputStream类型的构造函数都要花费很长时间。谷歌搜索揭示了这一点。我遵循以下步骤: 1.首先创建ObjectOutputStream 2.冲洗 3.第二次创建ObjectInputStream

但这对我不起作用。想知道为什么

服务器:

侦听器线程/守护进程:

Socket connSocket;
try {
        ServiceListener.serverSocket = new ServerSocket(listenPort);
        System.out.println("Listening on port: " + listenPort);

        while (true) {
            connSocket = serverSocket.accept();
            nodeList.add(connSocket);
            System.out.println("Accepted connections ( " + connSocket + "):" + getConnectedNodeCount());
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
服务器线程(接受连接后)

服务器控制台输出:

starting Listener 11...
Service Function started !!
Listening on port: 2244
Accepted connections ( Socket[addr=/127.0.0.1,port=62994,localport=2244]):1
客户端控制台:

Creating Node socket...

我会将do{}while(false)更改为do{}while(true),否则,让while循环只运行一次并退出是没有意义的,也就是说,do while(false)循环的行为就像它不在那里一样

编辑问题以反映有两条平行线1。侦听器(使用while(true)2.Server线程(读取/写入)在接受的连接socketsYes上,我可以也应该这样做。但是,这仍然不能解决我在创建ObjectInputStream对象时面临的问题。如果您调试它到底挂在哪里,挂在哪一行,最好检查客户端上的服务器ip和端口是否使用线程安全列表实现?
starting Listener 11...
Service Function started !!
Listening on port: 2244
Accepted connections ( Socket[addr=/127.0.0.1,port=62994,localport=2244]):1
Creating Node socket...