Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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_Client Server_Objectinputstream - Fatal编程技术网

Java 客户端-服务器ObjectInputStream错误

Java 客户端-服务器ObjectInputStream错误,java,client-server,objectinputstream,Java,Client Server,Objectinputstream,我的密码是 try { //Connect to the login server socket = new Socket(hostName , 15000); out = new ObjectOutputStream(socket.getOutputStream()); input = new ObjectInputStream(socket.getInputStream());

我的密码是

try
    {
        //Connect to the login server
        socket = new Socket(hostName , 15000);
        out = new ObjectOutputStream(socket.getOutputStream());
        input = new ObjectInputStream(socket.getInputStream());

                    .. //perform the login , if the login succeed make answ=1;
    }
    catch (UnknownHostException e) {
        System.err.println("Unknown host: " + hostName);
        StatusLabel.setText("Unknown host");
    }
    catch (ConnectException e) {
        System.err.println("Connection refused by host: " + hostName);
        StatusLabel.setText("Connection refused by host, server is down.");
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    finally {
        try 
        {
            //Finaly closing the connection
            socket.close();
            System.out.flush();
            System.out.println("Socket Closed");
                            //closing the output and input stream
            out.close();
            input.close();
            setVisible(false); //closing the window
        }
        catch (IOException e ) {
            System.out.println("Couldn't close socket");
        }
    }
    if(answ==1) //if the login suceed start the class for the game
    {
        Gumoku_Graphics g = new Gumoku_Graphics();
        g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        g.Play();
    }
在Gumoku_Graphics()中,我调用这个类来执行与游戏服务器的连接

Game n = new Game();
status=n.Connection();
那是

 public int Connection()  
{
    try {
        socket = new Socket(hostName, 15432);
        System.out.println("socket ok\n");

        out = new ObjectOutputStream(socket.getOutputStream());
        System.out.println("out ok\n");


        input = new ObjectInputStream(socket.getInputStream());
        System.out.println("socket,out,input ok\n");
        return 1;
    }

    catch (UnknownHostException e) {
        System.err.println("Unknown host: " + hostName);
        return 0;
    }
    catch (ConnectException e) {
        System.err.println("Connection refused by host: " + hostName);
        return 0;
    }
    catch (IOException e) {
        e.printStackTrace();
        return 0;
    }
}
每次它在“input=newobjectinputstream(socket.getInputStream());”中停止时 它不能这样做,它卡在那里了。 它打印“插座正常”,“输出正常”,然后卡在那里。 有什么问题吗?我做错了什么?

来自:

创建从指定的InputStream读取的ObjectInputStream。从流中读取序列化流头并进行验证。此构造函数将阻塞,直到相应的ObjectOutputStream写入并刷新标头

正如引用的那样,调用将阻塞,直到可以读取标头。您需要有一些数据才能从套接字到达,然后才能继续此调用