socket 获取回传信息_java中使用网络通信(Socket)来传输对象

服务端:package Work1;

/**

* 通过Socket通讯来传输对象序列

* 通过服务端接受到的流来恢复对象并通过toString显示出来对象的信息

*/

import java.io.*;

import java.net.ServerSocket;

import java.net.Socket;

public class MySocketServer {

public static void main(String[] args) throws IOException, ClassNotFoundException {

ServerSocket serverSocket = new ServerSocket(5000);

Socket socket = serverSocket.accept();

//输入流加工

InputStream inputStream = socket.getInputStream();

ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);

Object obj = objectInputStream.readObject();

if (obj !=null){

System.out.println("--------正在解析接受到的对象-----------");

Dog dog = (Dog)obj;

System.out.println(dog.toString());

}else{

System.out.println("收到信息但无法解析到对象");

}

//回复客户端

OutputStream outputStream = socket.getOutputStream();

String info = "服务器:对象已经接受到";

outputStream.write(info.getBytes());

objectInputStream.close();

serverSocket.close();

inputStream.close();

socket.close();

}

}

客户端:package Work1;

import java.io.*;

import java.net.Socket;

public class SocketClient {

//客户端

public static void main(String[] args) throws IOException {

Socket socket = new Socket("localhost",5000);

//我想发送一个对象给服务器

Dog dog = new Dog("黑豆",6);

OutputStream outputStream = socket.getOutputStream();

ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);

objectOutputStream.writeObject(dog);

socket.shutdownOutput();

//接受服务器响应

InputStream inputStream = socket.getInputStream();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

String reMsg = bufferedReader.readLine();

while (reMsg!= null){

System.out.println(reMsg);

reMsg = bufferedReader.readLine();

}

objectOutputStream.close();

socket.close();

}

}

Dog类:package Work1;

import java.io.Serializable;

public class Dog implements Serializable {

private String name;

private int age;

public Dog(String name, int age) {

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Dog{" +

"name='" + name + '\\'' +

", age=" + age +

'}';

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void setAge(int age) {

this.age = age;

}

}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值