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写入并刷新标头
正如引用的那样,调用将阻塞,直到可以读取标头。您需要有一些数据才能从套接字到达,然后才能继续此调用