客户端连接到服务器后,发送一个Order类的对象,其中包含一个字符串,然后在服务器的标准输出中打印出该字符串。
运行时发现在创建ObjectOutputStream对象和ObjectInputStream对象时,如果先创建ObjectOutputStream对象则程序正常进行,反之若先创建ObjectInputStream对象则程序会卡在创建ObjectInputStream对象时。请高手指教。
代码如下
Order.java
import java.io.Serializable;public class Order implements Serializable
{
  private static final long serialVersionUID = 1234567890123L;
  private String context;
  public Order(String context)
  {
    this.context = context;
  }
  
  public String getContext()
  {
    return context;
  }
}Server.java
import java.io.InputStream;
import java.io.OutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server
{
private InputStream is;
private ObjectInputStream ois;
private ObjectOutputStream oos;
private OutputStream os;

public Server()
{
try
{
ServerSocket server = new ServerSocket(6000);
Socket client = server.accept();
is = client.getInputStream();
os = client.getOutputStream();

/*
oos = new ObjectOutputStream(os);
ois = new ObjectInputStream(is);
*/

ois = new ObjectInputStream(is);////////////////////////////这两行若交换位置,则程序会正常运行
oos = new ObjectOutputStream(os);//////////////////////////// Order order = (Order)ois.readObject();
System.out.println(order.getContext());
}
catch (Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
new Server();
}
}Client.java
import java.io.InputStream;
import java.io.OutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.InetAddress;public class Client
{
private InputStream is;
private ObjectInputStream ois;
private ObjectOutputStream oos;
private OutputStream os;

public Client()
{
try
{
Socket client = new Socket(InetAddress.getByName("localhost"), 6000);
is = client.getInputStream();
os = client.getOutputStream();
ois = new ObjectInputStream(is);
oos = new ObjectOutputStream(os);

oos.writeObject(new Order("asfd"));
}
catch (Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
new Client();
}
}