JAVA 实现 服务器端与客户端 对象流传输?
//-----------------服务器端TestServerObjeectTrans类用于接受客户端传送过来的对象User,然后打印输出-------package...
// ----------------- 服务器端 TestServerObjeectTrans 类用于接受客户端传送过来的对象User,然后打印输出 -------
package com.test.server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServerObjeectTrans {
public TestServerObjeectTrans(){
try {
System.out.println("服务器端正在监听 9999") ;
ServerSocket server = new ServerSocket(9999) ;
Socket client = server.accept() ;
ObjectInputStream ois = new ObjectInputStream(client.getInputStream()) ;
System.out.println(ois) ;
[color=#FF0000]User user = (User)ois.readObject() ;[/color] // 运行此处发生类型转换异常
System.out.println("从客户端接受过来的USER对象:" + user.getUser() + " , " + user.getPass()) ;
client.close() ;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestServerObjeectTrans() ;
}
}
// 服务器端 User 对象
package com.test.server;
import java.io.Serializable;
public class User implements Serializable {
private String user ;
private String pass ;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
// ----------------- 客户端 TestClientObjectTrans类用于给服务器端传送User对象 -------
package cn.lxzp.turn;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestClientObjectTrans {
public TestClientObjectTrans(){
try {
Socket client = new Socket("127.0.0.1" , 9999) ;
ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream()) ;
User user = new User() ;
user.setUser("admin") ;
user.setPass("admin") ;
out.writeObject(user) ;
client.close() ;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestClientObjectTrans() ;
}
}
// 客户端User对象
package cn.lxzp.turn;
import java.io.Serializable;
public class User implements Serializable{
private String user ;
private String pass ;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
服务器端监听 ,等待客户端连接,传送User 对象!
首先服务器端运行,然后客户端运行。
运行异常:
服务器端正在监听 9999 // 此句打印出来了。
java.io.ObjectInputStream@c21495
java.lang.ClassNotFoundException: cn.lxzp.turn.User // 转换异常
从运行结果可以看出来是 类转换异常,服务器和客户端都定义了相同的User 对象,而且已经都序列 展开
package com.test.server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServerObjeectTrans {
public TestServerObjeectTrans(){
try {
System.out.println("服务器端正在监听 9999") ;
ServerSocket server = new ServerSocket(9999) ;
Socket client = server.accept() ;
ObjectInputStream ois = new ObjectInputStream(client.getInputStream()) ;
System.out.println(ois) ;
[color=#FF0000]User user = (User)ois.readObject() ;[/color] // 运行此处发生类型转换异常
System.out.println("从客户端接受过来的USER对象:" + user.getUser() + " , " + user.getPass()) ;
client.close() ;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestServerObjeectTrans() ;
}
}
// 服务器端 User 对象
package com.test.server;
import java.io.Serializable;
public class User implements Serializable {
private String user ;
private String pass ;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
// ----------------- 客户端 TestClientObjectTrans类用于给服务器端传送User对象 -------
package cn.lxzp.turn;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestClientObjectTrans {
public TestClientObjectTrans(){
try {
Socket client = new Socket("127.0.0.1" , 9999) ;
ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream()) ;
User user = new User() ;
user.setUser("admin") ;
user.setPass("admin") ;
out.writeObject(user) ;
client.close() ;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TestClientObjectTrans() ;
}
}
// 客户端User对象
package cn.lxzp.turn;
import java.io.Serializable;
public class User implements Serializable{
private String user ;
private String pass ;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
服务器端监听 ,等待客户端连接,传送User 对象!
首先服务器端运行,然后客户端运行。
运行异常:
服务器端正在监听 9999 // 此句打印出来了。
java.io.ObjectInputStream@c21495
java.lang.ClassNotFoundException: cn.lxzp.turn.User // 转换异常
从运行结果可以看出来是 类转换异常,服务器和客户端都定义了相同的User 对象,而且已经都序列 展开
4个回答
展开全部
因为服务器端没有 cn.lxzp.turn.User 这个对象。 你在服务器端定义的User 是在 com.test.server.User 不是 cn.lxzp.turn.User . 在转换过程中肯定报 找不到 Class
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1111
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询