UserInfo.java
package com.company.s6; import java.io.Serializable; public class UserInfo implements Serializable { private long id; private String username; private String password; public UserInfo() { } public UserInfo(long id, String username, String password) { this.id = id; this.username = username; this.password = password; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
Server.java
package com.company.s6; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) throws Exception{ ServerSocket serverSocket=new ServerSocket(8888); Socket socket=serverSocket.accept(); InputStream inputStream=socket.getInputStream(); OutputStream outputStream=socket.getOutputStream(); ObjectOutputStream objectOutputStream=new ObjectOutputStream(outputStream); ObjectInputStream objectInputStream=new ObjectInputStream(inputStream); for(int i=0;i<5;i++){ UserInfo userInfo=(UserInfo) objectInputStream.readObject(); System.out.println("在服务端打印 "+(i+1)+":"+userInfo.getId()+" "+userInfo.getUsername()+" "+userInfo.getPassword()); UserInfo newUserInfo=new UserInfo(); newUserInfo.setId(i+1); newUserInfo.setUsername("servername"+(i+1)); newUserInfo.setPassword("serverpassord"+(i+1)); objectOutputStream.writeObject(newUserInfo); } objectOutputStream.close(); objectInputStream.close(); outputStream.close(); inputStream.close(); socket.close(); serverSocket.close(); } }
Client.java
package com.company.s6; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.Socket; public class Client { public static void main(String[] args) throws Exception{ Socket socket=new Socket("localhost",8888); InputStream inputStream=socket.getInputStream(); OutputStream outputStream=socket.getOutputStream(); ObjectInputStream objectInputStream=new ObjectInputStream(inputStream); ObjectOutputStream objectOutputStream=new ObjectOutputStream(outputStream); for(int i=0;i<5;i++){ UserInfo newUserinfo=new UserInfo(); newUserinfo.setId(i+1); newUserinfo.setUsername("clientUserName:"+(i+1)); newUserinfo.setPassword("clientPassword:"+(i+1)); objectOutputStream.writeObject(newUserinfo); UserInfo userInfo=(UserInfo)objectInputStream.readObject(); System.out.println("在客户端打印:"+(i+1)+":"+userInfo.getId()+" "+userInfo.getUsername()+" "+userInfo.getPassword()); } objectInputStream.close(); objectOutputStream.close(); outputStream.close(); inputStream.close(); socket.close(); } }
ps: If the server to get objectInputStream object, and then get objectOutPutStream objects;
If the client is in the same order to obtain objects, so at runtime server side program code:
ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);
Blocking phenomenon.
The correct wording should be:
1: the server to get ObjectInputStream object, the client must first obtain ObjectOutPutStream objects;
2: the server to get ObjectOutPutStream object, the client must first obtain ObjectInPutStream objects;