91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Socket怎么傳輸對象

發布時間:2021-10-29 10:32:11 來源:億速云 閱讀:218 作者:柒染 欄目:編程語言

這篇文章給大家介紹Java Socket怎么傳輸對象,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

前面兩篇文章介紹了怎樣建立Java Socket通信,這一篇說一下怎樣使用Java Socket來傳輸對象。

首先需要一個普通的對象類,由于需要序列化這個對象以便在網絡上傳輸,所以實現java.io.Serializable接口就是必不可少的了,如下:

package com.googlecode.garbagecan.test.socket.sample3;   public class User implements java.io.Serializable {      private static final long serialVersionUID = 1L;      private String name;      private String password;       public User() {                }            public User(String name, String password) {          this.name = name;          this.password = password;      }            public String getName() {          return name;      }       public void setName(String name) {          this.name = name;      }       public String getPassword() {          return password;      }       public void setPassword(String password) {          this.password = password;      }  }

對于Server端的代碼,代碼中分別使用了ObjectInputStream和ObjectOutputStream來接收和發送socket中的InputStream和OutputStream,然后轉換成Java對象,如下:

package com.googlecode.garbagecan.test.socket.sample3;   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: " + user.getName() + "/" + user.getPassword());                       user.setName(user.getName() + "_new");                      user.setPassword(user.getPassword() + "_new");                       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();      }  }

Client也和Server端類似,同樣使用ObjectOutputStream和ObjectInputStream來處理,如下:

package com.googlecode.garbagecan.test.socket.sample3;   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 = 0; i < 100; 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: " + 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) {}              }          }      }  }

測試上面的代碼,首先運行Server類,然后運行Client類,就可以分別在Server端和Client端控制臺看到接收到的User對象實例了。

關于Java Socket怎么傳輸對象就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庄河市| 姜堰市| 基隆市| 新闻| 阿鲁科尔沁旗| 阳泉市| 房山区| 铜川市| 隆尧县| 东宁县| 景德镇市| 射阳县| 伊金霍洛旗| 沭阳县| 改则县| 淮阳县| 秀山| 遵化市| 定州市| 金华市| 禹城市| 社旗县| 东阿县| 炉霍县| 元氏县| 敦煌市| 宿迁市| 繁昌县| 高台县| 汉源县| 孝义市| 肥乡县| 罗甸县| 建阳市| 元谋县| 会同县| 平阴县| 台中县| 克山县| 安顺市| 博野县|