我想做个测试,用cs模式,从客户端传一个对象给服务器,服务器修改这个对象的属性,再传回客户端。但是出了个问题。客户端运行到ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());这一行时,停住了。
服务器端也是运行到ObjectInputStream ois= new ObjectInputStream(socket.getInputStream());这一行停住了。
请大侠解释一下,为什么。
public class Client {
public static void main(String[] args) {
Good good = new Good();
User user = new User();
good.setName("good one");
good.setPrice(18);
user.setAge(21);
user.setName("jack");
try {
Socket socket =new Socket("192.168.52.129",30000);
System.out.println("socket successful");
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
System.out.println("oos is ok");
oos.writeObject(good);
socket.shutdownOutput();
ois.readObject();
System.out.println(good.getName()+good.getPrice());
oos.close();
ois.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class Server {
public static void main(String[] args) throws Exception {
try {
ServerSocket serverSocket = new ServerSocket(30000);
System.out.println("服务器已经启动,等待连接");
Socket socket = serverSocket.accept();
System.out.println("服务器收到请求");
ObjectInputStream ois= new ObjectInputStream(socket.getInputStream());
System.out.println("ois is ok");
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
System.out.println("oos is ok");
Good good = (Good)ois.readObject();
System.out.println(good.getName()+good.getPrice());
good.setName("servergood");
good.setPrice(25);
socket.shutdownInput();
oos.writeObject(good);
ois.close();
oos.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}