java 对象流传输socket_socket直接的对象流传输

工作中常常会用到对远程服务的访问,但是又不是同一个项目,或者是有权限的访问,

可以用到socket进行数据的传输,将服务装安装在服务端,将class文件变成服务,以响应客户端的请求。(下期介绍)

这里先来讲述下,java下socket对象流的传输

话不多少,用一个小例子来实现。

//客户端代码

public class SocketClient {

Socket client;

PrintWriter pw;

public SocketClient() throws UnknownHostException, IOException

{

//new一个client对象(ip,端口)

client = new Socket("127.0.0.1", 4700);

List ll = new ArrayList();

List list = new ArrayList();

list.add("555");

list.add("666");

//new一个Object输出流对象从client端得到流;

ObjectOutputStream oos = new

ObjectOutputStream(client.getOutputStream());

//new一个Object输入流对象(这个是从服务端传过来的)

ObjectInputStream ois = new

ObjectInputStream(client.getInputStream());

//将list对象传送到服务端

oos.writeObject(list);

try {

System.out.println(((List)ois.readObject()).get(0));

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

oos.close();

ois.close();

// pw.close();

// br.close();

}

public static void main(String[] args) {

try {

new SocketClient();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

//服务端代码

public class SocketServer {

private Socket socket;

private ServerSocket ss;

public SocketServer() throws IOException {

//启动ServerSocket(监控4700端口,端口可配,但必须大于1024)

ss = new ServerSocket(4700);

while (true) {

//监控客户端

socket = ss.accept();

List ll = new ArrayList();

List list = new ArrayList();

// BufferedReader br = new BufferedReader(new

InputStreamReader(socket.getInputStream()));

//新建一个输入流对象,从客户端获得流.

ObjectInputStream ois = new

ObjectInputStream(socket.getInputStream());

//新建一个Object输出流对象.

ObjectOutputStream oos = new

ObjectOutputStream(socket.getOutputStream());

// User u = new User();

// User u1 = new User();

try {

//读取流对象(因为已知传输过来的是list就强转成list)

ll = (List)ois.readObject();

list.add("333");

list.add("222");

//此为返回给客户端的list

oos.writeObject(list);

//完成后关闭流

oos.flush();

oos.close();

ois.close();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

System.out.println("you input is : " + ll.get(0));

}

}

public static void main(String[] args) {

try {

new SocketServer();

} catch (IOException e) {

e.printStackTrace();

}

}

}

具体,将服务端代码编译成class文件之后转换成win服务。随时响应客户端的请求,达到传输数据的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值