【发布时间】:2014-05-18 04:08:04
【问题描述】:
我正在尝试编写一个基本的 TCP 服务器,它有一个名为 Person 的 Object 从单个客户端发送给它。我已经使连接正常工作并将Object 发送到服务器。但是,每当我尝试将读取的Object 转换回Person(客户端和服务器都存在人员类)时,服务器会抛出ClassNotFoundException。问题出在以下代码行
Person person = (Person)in.readObject();
这是服务器类:
public class ConnectionTestServer extends Thread {
private ServerSocket server;
private Socket client;
private BufferedReader reader;
@Override
public void run() {
try {
server = new ServerSocket( 25565 );
client = server.accept();
ObjectInputStream in = new ObjectInputStream( client.getInputStream() );
while ( true ){
System.out.println(in.toString());//This was for debug
if(in.readObject() instanceof Person){//and this
System.out.println("Working?");
}
Person person = (Person)in.readObject();//Here is the ClassNotFoundException
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ConnectionTestServer().start();
}
}
这是客户端类:
public class ConnectionTestClient {
private static Socket server;
public static void main(String[] args) {
try {
server = new Socket("localhost", 25565);
ObjectOutputStream stream = new ObjectOutputStream( server.getOutputStream() );
stream.writeObject( new Person() );
stream.flush();
server.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
最后是 Person 类:
public class Person implements Serializable {
public int id = 10;
}
如果有人能帮我解决这个问题,我将不胜感激。此外,对我(可能)糟糕的编码的一些一般建议会很好。谢谢!
【问题讨论】:
-
也可以导入
Person。
标签: java sockets tcp deserialization objectinputstream