Java服务器与客户端之间传输对象流

客户端User对象

package com.common;

/**
 * 用户
 */
public class User implements java.io.Serializable{
    private String name;
    private String password;

    public User() {
    }

    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;
    }
}

客户端

package test2;

import com.common.User;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

/**
 * 客户端
 */
public class MyClient {
    public static void main(String[] args) {
        MyClient myClient=new MyClient();
    }

    public MyClient(){
        try {
            //设置端口号,127.0.0.1本机连接IP
            Socket s=new Socket("127.0.0.1",3456);
            //新建User对象
            User u=new User();
            u.setName("咚咚锵");
            u.setPassword("123456");
            //输出对象流
            ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());
            //将指定的User对象写入ObjectOutputStream
            oos.writeObject(u);
            System.out.println("ok");
            //关闭客户端
            s.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

服务器User

package com.common;

/**
 * 用户
 */
public class User implements java.io.Serializable{
    private String name;
    private String password;

    public User() {
    }

    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;
    }
}

 服务器

package com.test1;

import com.common.User;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务器
 */
public class MyServer {
    public static void main(String[] args) {
        MyServer myServer=new MyServer();
    }

    public MyServer(){
        try {
            System.out.println("开始监听");
            //设置服务器端口
            ServerSocket ss=new ServerSocket(3456);
            //阻塞,等待连接
            Socket s=ss.accept();
            //获取对象流
            ObjectInputStream obj=new ObjectInputStream(s.getInputStream());
            //转换为User对象
            User u=(User)obj.readObject();
            System.out.println("接收到:"+u.getName()+" "+u.getPassword());
            //关闭服务器
            ss.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }
}

 这里要注意,User必须实现

java.io.Serializable

不实现此接口的类将不会使任何状态序列化或反序列化。

只有支持java.io.Serializable接口的对象才能写入流中。

发布了88 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dai_ma_dong/article/details/103407674