以下是客戶端序列化后將對象發送給服務端
public ResponseBean r(int b) {
try {
Socket socket = new Socket(Config.ServerIP,Config.ServerPort);
RequestBean rb = new RequestBean();
rb.password = this.password;
rb.ctrl = b;
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(rb);
objectOutputStream.flush();
objectOutputStream.close();
//socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
以下是服務端接收到序列化之后進行反序列化
1 public void r(Socket s){ //進行管理的函數 2 try { 3 InputStream inputStream = s.getInputStream(); 4 5 6 ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); 7 try { 8 RequestBean rb =(RequestBean) objectInputStream.readObject(); 9 System.out.println(rb.password); 10 } catch (ClassNotFoundException e) { 11 // TODO Auto-generated catch block 12 System.out.println("err 收到客戶端的請求不能發序列化到RequestBean"); 13 //e.printStackTrace(); 14 } 15 16 17 18 } catch (IOException e) { 19 // TODO Auto-generated catch block 20 e.printStackTrace(); 21 } 22 }
以下是序列化對象記得要實現Serializable接口,不然會出現unknown source這樣的錯誤
package cn.fucihua.Model.Bean; import java.io.Serializable; public class RequestBean implements Serializable{ //序列化之后傳給代理池服務的對象 public String password = ""; public int ctrl = 0; /* * 1 開啟服務 * 2 關閉服務 * 3 重啟服務 * 0 查詢狀態 * */ }
服務端客戶端的類包名記得要一致
