1、Java Socket接收和发送(对象传递) 1.传递的对象 User.java package pb.socket.LoginStr; import java.io.Serializable; public class User implements Serializable{ private String loginName; private String psw; public User(){ } public User(String loginName,String psw){ this.loginName=loginName; this.psw
2、psw; } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPsw() { return psw; } public void setPsw(String psw) { this.psw = psw; } } 2.客户端 LoginClient.java package pb.socket.LoginStr; imp
3、ort java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.PrintWriter; import .Socket; import .UnknownHostException; public class LoginClient { publi
4、c static void main(String[] args) { try { //1.建立客户端socket连接,指定服务器位置及端口 Socket socket =new Socket("localhost",8800); //2.得到socket读写流 OutputStream os=socket.getOutputStream(); //对象序列化流 ObjectOutputStream oos=new ObjectOutputStream(os); //输入流 InputStream is=socket.getInputStream(); BufferedRe
5、ader br=new BufferedReader(new InputStreamReader(is)); //3.利用流按照一定的操作,对socket进行读写操作 User user=new User(); user.setLoginName("zhangxun"); user.setPsw("123456"); oos.writeObject(user); socket.shutdownOutput(); //接收服务器的相应 String reply=null; while(!((reply=br.readLine())==null)){ System.out.pr
6、intln("接收服务器的信息:"+reply); } //4.关闭资源 br.close(); is.close(); oos.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 3.服务器端 LoginServer.java package pb.socket.LoginStr; import java.io.Bu
7、fferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.OutputStream; import java.io.PrintWriter; import .ServerSocket; import .Socket; public class LoginServer { public static void main(Stri
8、ng[] args) { try { //1.建立一个服务器Socket(ServerSocket)绑定指定端口 ServerSocket serverSocket=new ServerSocket(8800); //2.使用accept()方法阻止等待监听,获得新连接 Socket socket=serverSocket.accept(); //3.获得输入流 InputStream is=socket.getInputStream(); //获得流:可以对对象进行反序列化 ObjectInputStream ois=new ObjectInputStream(is);
9、//获得输出流 OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os); //4.读取用户输入信息 User user = (User)ois.readObject(); System.out.println("用户信息 :"+user.getLoginName()+"---"+user.getPsw()); //给客户一个响应 String reply="welcome"; pw.write(reply); pw.flush(); //5.关闭资源 pw.close(); os.close(); ois.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }






