java socket 发对象_通过java中的套接字发送对象

我有2个java netbeans项目,一个是Server,另一个是Client.我有一个我创建的Message类,我希望将其传递给服务器,并在服务器上完成修改后返回到客户端.我在两个项目中都包含了Message类.我使用ObjectOutputStream和ObjectInputStream来传递对象.服务器和客户端之间的连接是正常的,对象通过但在服务器上,当我使用readObject()方法从ObjectInputStream读取对象时,我将其类型转换为Message类.但是在服务器上抛出了ClassNotFoundException.它找不到Message类.我该如何解决这个问题?

客户代码:

public void startClient() {

try {

// Create the socket

Socket clientSocket = new Socket(HOST, PORT);

// Create the input & output streams to the server

ObjectOutputStream outToServer = new ObjectOutputStream(clientSocket.getOutputStream());

ObjectInputStream inFromServer = new ObjectInputStream(clientSocket.getInputStream());

// Read modify

// TODO here

/* Create The Message Object to send */

LinkedList msgList = new LinkedList<>();

Message msg = new Message();

msg.setMessage("Kasun");

msg.setIndex(1);

msg.setAverage(5.5f);

msgList.push(msg);

/* Send the Message Object to the server */

outToServer.writeObject(msgList);

/* Retrive the Message Object from server */

LinkedList inFromServerList = new LinkedList<>();

Message msgFrmServer = null;

inFromServerList = (LinkedList)inFromServer.readObject();

msgFrmServer = inFromServerList.pop();

/* Print out the recived Message */

System.out.println("Message: " + msgFrmServer.getMessage());

System.out.println("Index: " + msgFrmServer.getIndex());

System.out.println("Average: " + msgFrmServer.getAverage());

clientSocket.close();

} catch (Exception e) {

System.err.println("Client Error: " + e.getMessage());

System.err.println("Localized: " + e.getLocalizedMessage());

System.err.println("Stack Trace: " + e.getStackTrace());

}

}

服务器代码

public void startServer() {

try {

ServerSocket welcomeSocket = new ServerSocket(PORT);

while (true) {

// Create the Client Socket

Socket clientSocket = welcomeSocket.accept();

System.out.println("Socket Extablished...");

// Create input and output streams to client

ObjectOutputStream outToClient = new ObjectOutputStream(clientSocket.getOutputStream());

ObjectInputStream inFromClient = new ObjectInputStream(clientSocket.getInputStream());

// Read modify

// TODO here

/* Create Message object and retrive information */

LinkedList inList = new LinkedList<>();

Message inMsg = null;

inList = (LinkedList)inFromClient.readObject();

inMsg = inList.pop();

/* Modify the message object */

inMsg.setMessage(inMsg.getMessage().toUpperCase());

inMsg.setIndex(5);

inMsg.setAverage(10.5f);

/* Send the modified Message object back */

outToClient.writeObject(inMsg);

}

} catch (Exception e) {

System.err.println("Server Error: " + e.getMessage());

System.err.println("Localized: " + e.getLocalizedMessage());

System.err.println("Stack Trace: " + e.getStackTrace());

System.err.println("To String: " + e.toString());

}

}

在“服务器”抛出的异常

java.lang.ClassNotFoundException: rusl.online.examination.system.client.utility.Message

我必须使用java RMI吗?有没有使用RMI的解决方案?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值