双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

序列化对象遇到的问题...

wangjch wangjch 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚学序列化,写了一个通过sock窗松序列化的测试程序,如下:

序列化对象:

import java.io.Serializable;
public class MySerializableTest implements Serializable
{
private String name = null;
private String friend = null;
private String school = null;

public MySerializableTest()
{
super();
init();
}

private void init()
{
this.name = "magic";
this.friend = "flower";
this.school = "No.1";

}
public String getFriend()
{
return friend;
}
public String getName()
{
return name;
}
public String getSchool()
{
return school;
}
public void setFriend(String string)
{
friend = string;
}
public void setName(String string)
{
name = string;
}
public void setSchool(String string)
{
school = string;
}

}

sock发送:

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

public class SockWriteObject
{

public static void main(String[] args)
{
try
{
ObjectOutputStream obout;
Socket sock = new Socket("127.0.0.1",6000);
MySerializableTest test = new MySerializableTest();

test.setName("metarnet");
test.setFriend("native");
test.setSchool("bupt");

obout = new ObjectOutputStream(new BufferedOutputStream(sock.getOutputStream()));
obout.writeObject(test);
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

sock接收:

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.ObjectInputStream;

import java.net.ServerSocket;
import java.net.Socket;

public class ServerReadObject
{

public static void main(String[] args)
{
try
{
ObjectInputStream obin;
ServerSocket server = new ServerSocket(6000);
Socket sock;


sock = server.accept();

obin = new ObjectInputStream(new BufferedInputStream(sock.getInputStream()));

MySerializableTest test = (MySerializableTest)obin.readObject();

System.out.println(test.getName());
System.out.println(test.getFriend());
System.out.println(test.getSchool());

}
catch (IOException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}

结果报错:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2150)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2163)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2631)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
at serializableTest.ServerReadObject.main(ServerReadObject.java:39)

也就是说
obin = new ObjectInputStream(new BufferedInputStream(sock.getInputStream()));
这个语句有问题,问题出在什么地方?该怎么解决呢??
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
wangjch
Java EE 67,535 成员 225,843 内容