服务器客户端间数据传输(最简单例子)

服务器客户端间数据传输(最简单例子)


本地Send项目向Re项目传输数据
项目结构如下:
服务器客户端间数据传输(最简单例子)_第1张图片
Send项目为发送数据,Re项目为接收数据

由于需要实体所以两个项目要有同样的实体类Student

Student.java(两个Student类代码完全相同)代码如下:

import java.io.Serializable;

public class Student implements Serializable {
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

Send.java代码如下:

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Send {
	public static void main(String[] args) {
		try {
			// 本地主机 端口8001
			Socket s = new Socket("localhost", 8001);
			// 获取输出流
			OutputStream os = s.getOutputStream();
			// Student对象
			Student stu = new Student();
			// 写入学生年龄20
			stu.setAge(20);
			// 对象输出流
			ObjectOutputStream oos = new ObjectOutputStream(os);
			// stu对象写入oos输出流
			oos.writeObject(stu);
			// 清空oos流
			oos.flush();
			// oos os s 分别关闭
			oos.close();
			os.close();
			s.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

Recive.java代码如下:

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

public class Recive {
	public static void main(String[] args) {
		try {
			// 创建一个ServerSocket套接字对象,并绑定在8001端口上
			ServerSocket ss = new ServerSocket(8001);
			// 连接成功 将ss返回的Socket接收
			Socket s = ss.accept();
			// 输入流
			InputStream is = s.getInputStream();
			// 对象输入流
			ObjectInputStream ois = new ObjectInputStream(is);
			// 将对象从流中取出来
			Student stu = (Student) ois.readObject();
			// 输出年龄
			System.out.println(stu.getAge());
			// 关闭流
			ois.close();
			is.close();
			s.close();
			ss.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

运行时,先运行Recive.java再运行Send.java
结果如下:
这里写图片描述

你可能感兴趣的:(JavaSE)