Socket传对象

来源:互联网 发布:手机看报纸软件 编辑:程序博客网 时间:2024/05/22 13:37
package cc12;import java.io.*;  import java.net.ServerSocket;  import java.net.Socket;  import java.util.logging.Level;  import java.util.logging.Logger;    public class MyServer {        private final static Logger logger = Logger.getLogger(MyServer.class.getName());            public static void main(String[] args) throws IOException {          ServerSocket server = new ServerSocket(10000);            while (true) {              Socket socket = server.accept();              invoke(socket);          }      }        private static void invoke(final Socket socket) throws IOException {          new Thread(new Runnable() {              public void run() {                  ObjectInputStream is = null;                  ObjectOutputStream os = null;                  try {                      is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));                      os = new ObjectOutputStream(socket.getOutputStream());                        Object obj = is.readObject();                      User user = (User)obj;                      System.out.println("姓名: " + user.getName() + " 密码:" + user.getPassword());                        //user.setName("姓名为 "+user.getName());                     // user.setPassword("密码为 "+user.getPassword());                        os.writeObject(user);                      os.flush();                  } catch (IOException ex) {                      logger.log(Level.SEVERE, null, ex);                  } catch(ClassNotFoundException ex) {                      logger.log(Level.SEVERE, null, ex);                  } finally {                      try {                          is.close();                      } catch(Exception ex) {}                      try {                          os.close();                      } catch(Exception ex) {}                      try {                          socket.close();                      } catch(Exception ex) {}                  }              }          }).start();      }  }  

package cc12;import java.io.BufferedInputStream;  import java.io.IOException;  import java.io.ObjectInputStream;  import java.io.ObjectOutputStream;  import java.net.Socket;  import java.util.logging.Level;  import java.util.logging.Logger;    public class MyClient {            private final static Logger logger = Logger.getLogger(MyClient.class.getName());            public static void main(String[] args) throws Exception {          for (int i =1; i <6; i++) {             Socket socket = null;              ObjectOutputStream os = null;              ObjectInputStream is = null;                            try {                  socket = new Socket("localhost", 10000);                        os = new ObjectOutputStream(socket.getOutputStream());                  User user = new User("user_" + i, "password_" + i);                  os.writeObject(user);                  os.flush();                                    is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));                  Object obj = is.readObject();                  if (obj != null) {                      user = (User)obj;                      System.out.println("姓名为: " + user.getName() + " 密码为:" + user.getPassword());                  }              } catch(IOException ex) {                  logger.log(Level.SEVERE, null, ex);              } finally {                  try {                      is.close();                  } catch(Exception ex) {}                  try {                      os.close();                  } catch(Exception ex) {}                  try {                      socket.close();                  } catch(Exception ex) {}              }          }      }  }  

0 0