当前位置: 技术问答>java相关
=====请教一个有关ObjectInputStream的问题=====
来源: 互联网 发布时间:2017-03-19
本文导语: 以下程序通过编译,但运行到 ObjectInputStream in = new ObjectInputStream(ConnectionData.socket.getInputStream()); 时程序再也运行不下去了,并且没有抛出异常。 如果把与ObjectInputStream 有关的这两行改为/* ...*/中的代码,则可以运...
以下程序通过编译,但运行到
ObjectInputStream in = new ObjectInputStream(ConnectionData.socket.getInputStream());
时程序再也运行不下去了,并且没有抛出异常。
如果把与ObjectInputStream 有关的这两行改为/* ...*/中的代码,则可以运行。
请大侠帮忙看一下应该怎样改。我可想了四、五个小时。
不胜感激!
boolean connectToServer()
{
ConnectionData.server = jtxtServerIP.getText().toString().trim();
try
{
ConnectionData.serport = Integer.parseInt(jtxtServerPort.getText().trim());
InetAddress addr = InetAddress.getByName(ConnectionData.server);
ConnectionData.socket = new Socket(addr, ConnectionData.serport);
ObjectInputStream in = new ObjectInputStream(ConnectionData.socket.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(ConnectionData.socket.getOutputStream());
/* BufferedReader in = new BufferedReader(new InputStreamReader(
ConnectionData.socket.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(ConnectionData.socket.getOutputStream())),true);*/
} catch(NumberFormatException e) // 端口有误
{
JOptionPane.showMessageDialog(this,"请填写一个1--65536的端口!","确定",
JOptionPane.ERROR_MESSAGE);
return false;
} catch(UnknownHostException e) //找不到该服务器
{
JOptionPane.showMessageDialog(this,"不能与服务器建立连接!","确定",
JOptionPane.ERROR_MESSAGE);
return false;
} catch(Exception e) // 连接服务器有误
{
try
{
ConnectionData.socket.close();
} catch(Exception e2) {}
JOptionPane.showMessageDialog(this,"不能与服务器建立连接!","确定",
JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}
ObjectInputStream in = new ObjectInputStream(ConnectionData.socket.getInputStream());
时程序再也运行不下去了,并且没有抛出异常。
如果把与ObjectInputStream 有关的这两行改为/* ...*/中的代码,则可以运行。
请大侠帮忙看一下应该怎样改。我可想了四、五个小时。
不胜感激!
boolean connectToServer()
{
ConnectionData.server = jtxtServerIP.getText().toString().trim();
try
{
ConnectionData.serport = Integer.parseInt(jtxtServerPort.getText().trim());
InetAddress addr = InetAddress.getByName(ConnectionData.server);
ConnectionData.socket = new Socket(addr, ConnectionData.serport);
ObjectInputStream in = new ObjectInputStream(ConnectionData.socket.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(ConnectionData.socket.getOutputStream());
/* BufferedReader in = new BufferedReader(new InputStreamReader(
ConnectionData.socket.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(ConnectionData.socket.getOutputStream())),true);*/
} catch(NumberFormatException e) // 端口有误
{
JOptionPane.showMessageDialog(this,"请填写一个1--65536的端口!","确定",
JOptionPane.ERROR_MESSAGE);
return false;
} catch(UnknownHostException e) //找不到该服务器
{
JOptionPane.showMessageDialog(this,"不能与服务器建立连接!","确定",
JOptionPane.ERROR_MESSAGE);
return false;
} catch(Exception e) // 连接服务器有误
{
try
{
ConnectionData.socket.close();
} catch(Exception e2) {}
JOptionPane.showMessageDialog(this,"不能与服务器建立连接!","确定",
JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}
|
ObjectInputStream in = new ObjectInputStream(ConnectionData.socket.getInputStream());
从ConnectionData.socket.getInputStream()得到的对象流的类是否实现了Serialization接口,如果不是,不能用ObjectInputStream。
从ConnectionData.socket.getInputStream()得到的对象流的类是否实现了Serialization接口,如果不是,不能用ObjectInputStream。
|
catch一下IOException,看有没有错误