Java ObjectOutputStream-客户端/服务器通信

Java ObjectOutputStream-客户端/服务器通信,java,object,client-server,objectinputstream,objectoutputstream,Java,Object,Client Server,Objectinputstream,Objectoutputstream,我是java客户机-服务器通信新手,我面临着从客户机端向服务器端发送对象的问题。不知怎的,我的程序在试图传输对象时发生了故障。可能的原因是ObjectOutputStream实现 数据库登录按钮 class Handler implements ActionListener { Client client = new Client(); List<String> parameterList = new ArrayList<String>(); Clien

我是java客户机-服务器通信新手,我面临着从客户机端向服务器端发送对象的问题。不知怎的,我的程序在试图传输对象时发生了故障。可能的原因是ObjectOutputStream实现

数据库登录按钮

class Handler implements ActionListener {
   Client client = new Client();
   List<String> parameterList = new ArrayList<String>();
   ClientParameter parameter;

   public void actionPerformed(ActionEvent event) {
      if(event.getSource()==buttonConnect) {
         parameterList.add(username);
         parameterList.add(password);
         parameter = new ClientParameter(parameterList);
         client.connectToServer(parameter);
}
和服务器类

public class Server {
   private static void handleConnection(Socket client) throws IOException {
      ObjectInputStream objectIn = new ObjectInputStream(client.getInputStream());
      ObjectOutputStream objectOut = new ObjectOutputStream(client.getOutputStream());

      ClientParameter parameter;
      try {
         parameter = (ClientParameter) objectIn.readObject();
         System.out.println(parameter);
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args) throws IOException {
      ServerSocket server = new ServerSocket(3141);
      while(true) {
         Socket client = null;
         try {
            client = server.accept();
            handleConnection(client);
         }
         catch(IOException e) {
            e.printStackTrace();
         }
         finally {
            if(client!=null) {
               try {
                  client.close();
               }
               catch(IOException e) {
                  System.out.println(e);
               }
            }
         }
      }
   }
}

谢谢大家!

服务器首先读取客户端发送的内容。客户端也从读取服务器发送的内容开始。所以这是一个僵局

实际上,ObjectInputStream的构造函数在收到序列化流头之前会阻塞:

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

删除以下行,因为您无论如何都不会对ObjectInputStream执行任何操作:

ObjectInputStream objectIn = new ObjectInputStream(server.getInputStream());

服务器首先读取客户端发送的内容。客户端也从读取服务器发送的内容开始。所以这是一个僵局

实际上,ObjectInputStream的构造函数在收到序列化流头之前会阻塞:

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

删除以下行,因为您无论如何都不会对ObjectInputStream执行任何操作:

ObjectInputStream objectIn = new ObjectInputStream(server.getInputStream());

服务器首先读取客户端发送的内容。客户端也从读取服务器发送的内容开始。所以这是一个僵局

实际上,ObjectInputStream的构造函数在收到序列化流头之前会阻塞:

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

删除以下行,因为您无论如何都不会对ObjectInputStream执行任何操作:

ObjectInputStream objectIn = new ObjectInputStream(server.getInputStream());

服务器首先读取客户端发送的内容。客户端也从读取服务器发送的内容开始。所以这是一个僵局

实际上,ObjectInputStream的构造函数在收到序列化流头之前会阻塞:

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

删除以下行,因为您无论如何都不会对ObjectInputStream执行任何操作:

ObjectInputStream objectIn = new ObjectInputStream(server.getInputStream());

ClientParameter
必须序列化感谢您提供的信息,但在读取ObjectInputStream和ObjectOutputStream的两行时仍会发生错误尝试刷新流。
ClientParameter
必须序列化感谢您提供的信息,但是在读取ObjectInputStream和ObjectOutputStream的两行时仍然会发生错误。请尝试刷新流。
ClientParameter
必须序列化感谢您提供的信息,但是,在读取ObjectInputStream和ObjectOutputStream的两行刷新流时仍然会发生错误。
ClientParameter
必须序列化感谢这些信息,但是在读取ObjectInputStream和ObjectOutputStream的两行刷新流时仍然会发生错误。